1
<category>
   <category>
       <category>
       </category>
   </category>
</category>
<category>
   <category>
       <category>
       </category>
   </category>
</category>

我有一个如上所述的 xml 段,其中许多子节点与父节点具有相同的名称,重复多个级别。使用 LINQ to XML 我想查询 1) 只是顶级节点和 2) 所有二级节点及其后代。通常,如果节点名称是唯一的,我可以使用 .Descendents("category") 或 .Element() ,但我找不到在 XML 层次结构中指定级别/深度的任何方法。

4

1 回答 1

3

1)只是顶级节点

Elements方法只接受当前节点下的元素,所以使用它来获取顶层category元素:

var topCategories = source.Elements("category");

2)所有二级节点及其后代

结合ElementsDescendants得到:

var topCategories = source.Elements("category").Descendants("category");

在这两个示例sourceXElement,都是该部分的父级category。例如categories在以下文档中:

<root>
    <elements>
        <element />
        <element />
    </elements>
    <categories>
        <category>
            <category>
                <category>
                    <category />
                </category>
            </category>
        </category>
        <category>
            <category>
                <category />
            </category>
        </category>
    </categories>
</root>
于 2013-07-02T11:09:57.837 回答