2014-09-12 56 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