检查所有孩子的XElement

时间:2012-07-31 13:14:50

标签: c# xml linq

我有XElement对象,这是从XML文件中读取的XML树。现在我想检查此树中的所有节点以获取第一个属性名称和值。有没有简单的方法来遍历所有节点(从root到leaves)?我的XML文件有很多不同的奇怪节点 - 这就是解决这个问题的难度。我想过写一些递归,但希望这是解决这个问题的另一种方法。

2 个答案:

答案 0 :(得分:2)

也许看看Xpath。像这样//*[@id=42]的XPath可以完成这项工作。

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

你可以只执行//*,它将返回树中的所有节点。

Xpath: http://msdn.microsoft.com/en-gb/library/ms950786.aspx

语法: http://msdn.microsoft.com/en-us/library/ms256471.aspx

答案 1 :(得分:1)

您可以使用XElement.Elements()获取所有子元素。

这里有一些代码使用递归来获取每个级别的所有元素:

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

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

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