2014-09-12 37 views
0

的所有后代我有下面的XML文件:读取单个元素

<data> 
    <set1> 
     <entry>Entry #1</entry> 
     <entry>Entry #2</entry> 
    </set1> 
</data> 

,我试图读取SET元素的所有后代。林不知道如果我是容易混淆的名词件与后代,所以我只是不会停止使用它们现在:)

这里是我使用C#代码:

List<String> list = new List<String>(); 
XDocument xml = XDocument.Load("file.xml"); 

var desc = xml.Descendants("set1"); 
foreach (var entry in desc) { 
    list.add(entry.Value); 
    Console.Write("element: " + entry.Value); 
} 

但是,相反的两条线控制台输出“Entry#1”和“Entry#2”的我只有一个“Entry#1Entry#2”。谢谢你的帮助!

回答

2

类似:

var desc = xd.Descendants("set1").Elements("entry"); 
+0

谢谢您,先生,做到了! – 2014-09-12 11:57:48

+0

@Tomáš'GunsBlazing'Frček总是欢迎:) – 2014-09-12 11:58:38

1

更改为

var desc = xml.Descendants("set1").Descendants(); 

而且还

Console.WriteLine 

我只是尝试它和它的作品。

错误是Descendants("set1")不会给你set1的后代。它给你的xml的根后裔叫做set1

至于Console.WriteLine - 它在写入内容的末尾添加了换行符。

+0

它的工作原理,谢谢你,在我看来,使用Elements()函数而没有参数应该和使用Descendants()函数一样。 – 2014-09-12 11:59:25

+0

@Tomáš'GunsBlazing'Frček不完全。 '后裔'也会给你嵌套的后代。在这种情况下,没有。但试一下:'条目#2'看看会发生什么。这完全取决于你需要的东西。 – ispiro 2014-09-12 12:01:37

+0

是的,我看到了区别,非常感谢:) – 2014-09-12 12:03:12