Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用LINQ查找xml文档中不同级别的节点具有相同名称的节点_C#_Xml_Linq To Xml - Fatal编程技术网

C# 使用LINQ查找xml文档中不同级别的节点具有相同名称的节点

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>

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

1)只有顶级节点

元素
方法只获取当前节点正下方的元素,因此使用它可以获取
类别
元素的顶层:

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