Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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# 检查所有子项是否存在异常_C#_Xml_Linq - Fatal编程技术网

C# 检查所有子项是否存在异常

C# 检查所有子项是否存在异常,c#,xml,linq,C#,Xml,Linq,我有XElement对象,它是从XML文件读取的XML树。现在我想检查这个树中的所有节点,以获得第一个属性名和值。有没有简单的方法可以遍历所有节点(从根到叶)?我的XML文件有很多不同且奇怪的节点——这就是为什么解决这个问题比较困难的原因。我想写一些递归,但希望这是另一种更容易解决的方法。也许可以看看Xpath。像这样的XPath可以完成这项工作 这意味着获取属性“id”值为42的所有节点 您只需执行/*,即可返回树中的所有节点 Xpath: 语法: 您可以使用获取所有子元素 下面是一些使用递

我有
XElement
对象,它是从XML文件读取的XML树。现在我想检查这个树中的所有节点,以获得第一个属性名和值。有没有简单的方法可以遍历所有节点(从根到叶)?我的XML文件有很多不同且奇怪的节点——这就是为什么解决这个问题比较困难的原因。我想写一些递归,但希望这是另一种更容易解决的方法。

也许可以看看Xpath。像这样的XPath可以完成这项工作

这意味着获取属性“id”值为42的所有节点

您只需执行
/*
,即可返回树中的所有节点

Xpath:

语法:

您可以使用获取所有子元素

下面是一些使用递归获取每个级别的所有元素的代码:

void GetElements(XElement element){
    var elements = element.Elements();

    foreach(Element e in elements){
        //some stuff here

        if(e.Elements() != null)
           GetElements(e);
    }
}

使用这个,我将只从我的XElement中获得级别1的子级。然后我需要通过重复.Elements()来获得另一个级别。我想避免。是的,这就是我想要的。我可以一次获取所有路径—加载XML文件时,然后我可以使用它们线性地获取所有节点:)thxy您应该在XPath中添加更多受限参数,以便更快:),例如属性,将节点“foo”作为父节点或诸如此类的内容。