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 に答える