使用LINQ从XML读取所有节点

时间:2010-10-06 12:54:59

标签: .net xml linq

我有一个XML文件,如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<ROOT>
    <NAME>
        ItemName
    </NAME>
    <LIST>
       <ITEM>
          ListItem1
       </ITEM> 
       <ITEM>
          ListItem2
       </ITEM> 
       <ITEM>
          ListItem3
       </ITEM> 
    </LIST>
</ROOT>

如何使用LINQ获取LIST标记内的所有ITEM?

2 个答案:

答案 0 :(得分:4)

类似的东西:

XDocument doc = XDocument.Load("foo.xml");
var items = from list in doc.Descendants("LIST")
            from item in list.Elements("ITEM")
            select item;

这将处理多个“LIST”元素,除了直接在“LIST”之外,不会找到“ITEM”元素。如果你不关心那些你可以使用的更好的点:

XDocument doc = XDocument.Load("foo.xml");
var items = doc.Descendants("ITEM");

答案 1 :(得分:3)

另一种语法是将Descendents方法链接到专门获取作为LIST节点的子节点的ITEM节点:

XDocument doc = XDocument.Load("foo.xml");
var nodes = doc.Descendants("LIST").Descendants("ITEM");