<category>
<category>
<category>
</category>
</category>
</category>
<category>
<category>
<category>
</category>
</category>
</category>
我有一个如上所述的xml段,其中许多子节点与父节点具有相同的名称,重复多个级别。使用LINQ to XML我想查询 1)只是顶级节点和 2)所有第二级节点及其后代。 通常情况下,如果节点名称是唯一的,我可以使用.Descendents(“category”)或.Element(),但我无法找到在XML层次结构中指定级别/深度的任何方法。
答案 0 :(得分:3)
1)只是顶级节点
Elements
方法只接受直接位于当前节点下的元素,因此使用它来获取category
元素的顶级元素:
var topCategories = source.Elements("category");
2)所有第二级节点及其后代
结合Elements
和Descendants
来获取:
var topCategories = source.Elements("category").Descendants("category");
在两个示例中,source
都是XElement
,是category
部分的父级。例如。 categories
在以下文档中:
<root>
<elements>
<element />
<element />
</elements>
<categories>
<category>
<category>
<category>
<category />
</category>
</category>
</category>
<category>
<category>
<category />
</category>
</category>
</categories>
</root>