我想让所有的孩子从给定节点到叶子而不使用递归。那可能吗?我知道如何在LINQ to XML中执行此操作,但是在XmlNode中存在一些问题:S
答案 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("//*");
(编辑:这个似乎有用)