C# 使用LINQ查找xml文档中不同级别的节点具有相同名称的节点
我有一个如上所述的xml段,其中许多子节点与父节点具有相同的名称,重复多个层次。我想查询使用LINQ到XML 1) 只有顶层节点和 2) 所有第二级节点及其子节点。 通常,如果节点名称是唯一的,我可以使用.degents(“category”)或.Element(),但我找不到任何方法来指定XML层次结构中的级别/深度。1)只有顶级节点C# 使用LINQ查找xml文档中不同级别的节点具有相同名称的节点,c#,xml,linq-to-xml,C#,Xml,Linq To Xml,我有一个如上所述的xml段,其中许多子节点与父节点具有相同的名称,重复多个层次。我想查询使用LINQ到XML 1) 只有顶层节点和 2) 所有第二级节点及其子节点。 通常,如果节点名称是唯一的,我可以使用.degents(“category”)或.Element(),但我找不到任何方法来指定XML层次结构中的级别/深度。1)只有顶级节点 元素方法只获取当前节点正下方的元素,因此使用它可以获取类别元素的顶层: <category> <category>
元素
方法只获取当前节点正下方的元素,因此使用它可以获取类别
元素的顶层:
<category>
<category>
<category>
</category>
</category>
</category>
<category>
<category>
<category>
</category>
</category>
</category>
2)所有二级节点及其子节点
组合元素
和子体
,以获得:
var topCategories = source.Elements("category");
在这两个示例中,source
是一个XElement
,它是类别
部分的父级。例如,以下文件中的类别
:
var topCategories = source.Elements("category").Descendants("category");
<root>
<elements>
<element />
<element />
</elements>
<categories>
<category>
<category>
<category>
<category />
</category>
</category>
</category>
<category>
<category>
<category />
</category>
</category>
</categories>
</root>