获取给定XmlNode的所有后代

时间:2012-08-02 14:04:06

标签: c# xml xmlnode

我想让所有的孩子从给定节点到叶子而不使用递归。那可能吗?我知道如何在LINQ to XML中执行此操作,但是在XmlNode中存在一些问题:S

2 个答案:

答案 0 :(得分:6)

您可以使用SelectNodes method以及选择所有后代的XPath表达式:

XmlNodeList result = myXmlNode.SelectNodes("descendant::node()");

如果您想更具体地过滤并且需要提供任何名称空间前缀,请务必使用other overload

更新:这只会选择非属性节点,因为您的问题不会要求属性。但是,可以通过修改XPath表达式来实现:

XmlnodeList result = myXmlNode.SelectNodes("descendant::node() | descendant::*/@*");

答案 1 :(得分:1)

您可以使用递归或XPath表达式:

我不是很擅长XPath,但有点像:

 var nodes = myDoc.SelectNodes("//*");  

(编辑:这个似乎有用)