3

我想在不使用递归的情况下从给定节点获取所有子节点直到离开。那可能吗?我知道如何在 LINQ to XML 中执行此操作,但是 XmlNode:S 有一些问题

4

2 回答 2

6

您可以将该SelectNodes方法与选择所有后代的 XPath 表达式一起使用:

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

如果您想更具体地过滤并需要提供任何命名空间前缀,请确保使用其他重载。

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

XmlnodeList result = myXmlNode.SelectNodes("descendant::node() | descendant::*/@*");
于 2012-08-02T14:11:29.673 回答
1

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

我不太擅长 XPath,但类似:

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

(编辑:这个似乎工作)

于 2012-08-02T14:11:26.997 回答