如何快速到达XML中的子孙?

时间:2010-08-26 19:17:19

标签: c# xml winforms

我有一个XML文件:

 <machine id="">
  <application id="">
   <fichier name=""/>
   <fichier name=""/>
   <fichier name=""/>
  </application>
  <application id="">
   <fichier name=""/>
   <fichier name=""/>
   <fichier name=""/>
  </application>
 </machine>

我知道机器和应用程序的ID以及fichier的名称。现在,我扫描所有机器,然后一旦找到,扫描应用程序,一旦找到,扫描fichier。相当长,所以我怎样才能快速达到我想要的那个?

3 个答案:

答案 0 :(得分:2)

假设您在名为XmlDocument的{​​{1}}中加载了XML,

以下内容应该有效:

xmlDoc
PS:以上使用XPath,网上有几个教程(同时由另一个用户提到),但是如果你真的想学习如何使用它,试试一些关于XSLT的Jenni Tennison的书,她是一个优秀的解释者。

答案 1 :(得分:1)

答案 2 :(得分:0)

您可以使用LINQ to XML执行此操作:

 var result = from m in xml.Descendants("machine")
             where m.Attribute("id").Value == "1"
              let a = m.Elements("application").Where (x => x.Attribute("id").Value == "3")
              let f = a.Elements("fichier").Where (x => x.Attribute("name").Value == "b")
              select f;