c# - 在 XDocument 中按名称在任意深度查询元素

标签 c# .net xml linq linq-to-xml

我有一个 XDocument 对象。我想使用 LINQ 在任意深度查询具有特定名称的元素。

当我使用 Descendants("element_name") 时,我只获得当前级别的直接子元素。我正在寻找 XPath 中“//element_name”的等效项...我应该只使用 XPath,还是可以使用 LINQ 方法来实现?

最佳答案

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

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" />

关于c# - 在 XDocument 中按名称在任意深度查询元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/566167/

相关文章:

.net - 代码应该对CPU内存模型做出哪些假设,以及如何记录这些假设?

c# - 使用 UDP 协议(protocol)将 C Sharp 中的文件从计算机发送到另一台计算机

android - 如何以编程方式获取 RotateDrawable 的轴心?

xml - Linux XML 解析器库

c# - 如何在聚合中使用 $project 将字符串转换为 mongoDb 中的数字?

c# - 在这种情况下锁定是否保证多个修改在线程间是原子的?

c# - 构造函数中的 XML 序列化代码执行顺序 - 重新排序的方式?

xml - 用于 Linux 的开源命令行工具,用于区分忽略元素顺序的 XML 文件

c# - WP7 在您滚动时更新 bing map

c# - 通过反射调用一个方法,没有得到TargetInvocationException