一尘不染

在XDocument的任何深度按名称查询元素

c#

我有一个XDocument对象。我想使用LINQ在任何深度查询具有特定名称的元素。使用时Descendants("element_name"),我只会得到当前级别的直接子级元素。我要寻找的是XPath中的“
// element_name”等价…我应该只使用XPath,还是可以使用LINQ方法来实现?谢谢。


阅读 241

收藏
2020-05-19

共1个答案

一尘不染

后代应该工作得很好。这是一个例子:

using System;
using System.Xml.Linq;

class Test
{
    static void Main()
    {
        string xml = @"
<root>
  <child id='1'/>
  <child id='2'>
    <grandchild id='3' />
    <grandchild id='4' />
  </child>
</root>";
        XDocument doc = XDocument.Parse(xml);

        foreach (XElement element in doc.Descendants("grandchild"))
        {
            Console.WriteLine(element);
        }
    }
}

结果:

<grandchild id="3" />
<grandchild id="4" />

2020-05-19