【发布时间】:2012-07-31 13:14:50
【问题描述】:
我有 XElement 对象,这是我从 XML 文件中读取的 XML 树。现在我想检查这棵树中的所有节点以获取第一个属性名称和值。有没有简单的方法来遍历所有节点(从根到叶)?我的 XML 文件有很多不同且奇怪的节点——这就是解决这个问题更难的原因。我想写一些递归,但希望这是另一种更容易解决的方法。
【问题讨论】:
我有 XElement 对象,这是我从 XML 文件中读取的 XML 树。现在我想检查这棵树中的所有节点以获取第一个属性名称和值。有没有简单的方法来遍历所有节点(从根到叶)?我的 XML 文件有很多不同且奇怪的节点——这就是解决这个问题更难的原因。我想写一些递归,但希望这是另一种更容易解决的方法。
【问题讨论】:
也许看看 Xpath。像 //*[@id=42] 这样的 XPath 可以完成这项工作。
意思是获取属性“id”为42的所有节点。
您可以只使用//*,它将返回树中的所有节点。
【讨论】:
您可以使用XElement.Elements() 获取所有子元素。
这是一些使用递归来获取每个级别的所有元素的代码:
void GetElements(XElement element){
var elements = element.Elements();
foreach(Element e in elements){
//some stuff here
if(e.Elements() != null)
GetElements(e);
}
}
【讨论】: