hello

Linq to XML Descendants 和 Elements的区别

xml结构:

<?xml version="1.0" encoding="utf-8" ?>
<foo>
    <bar>Test 1</bar>
    <baz>
        <bar>Test 2</bar>
    </baz>
    <bar>Test 3</bar>
</foo>

 查询代码:

XDocument doc = XDocument.Load("input.xml");
XElement root = doc.Root;

foreach (XElement e in root.Elements("bar"))
{
    Console.WriteLine("Elements : " + e.Value);
}

foreach (XElement e in root.Descendants("bar"))
{
    Console.WriteLine("Descendants : " + e.Value);
}

 结果:

Elements : Test 1
Elements : Test 3
Descendants : Test 1
Descendants : Test 2
Descendants : Test 3

由上可知,Elements不能查询包含在其子节点中的<bar>节点的元素,它是查询root直接所属的一级chirden元素,而Descendants是查询root节点下的所有的<bar>节点元素。
另外,Elements写法繁琐,需要从根节点元素一直往下开始写:如root.Elements("baz").Elements("bar"),而Descendants则不需要,直接root.Descendants("name")就可以了


posted @ 2013-04-29 12:44  B追风少年  阅读(3771)  评论(0编辑  收藏  举报

hello too