2012-03-24 16 views
3

Nodes()はsubを含むすべてのノードを出力します。ノード()とDescendantNodes()の使用

およびDescendantNodes()は再帰的に同じですが、

しかし - 私は、再帰的な方法が必要になりますどのような状況を...見つけるカント

私はNodesオーバーDescendantNodes()()での作業を好むはずです

すなわち:

enter image description here

IEnumerable<XNode> nodes =from nd in xmlTree.DescendantNodes() 
       select nd; 
      foreach (XNode node in nodes) 
       Console.WriteLine(node); 

出力:

enter image description here 質問:

私はノードで作業することができたときに、なぜ私は、それが再帰的に分割さが必要になりますか()?

答えて

7

井戸nodesは、それを呼び出すノードの子ノードを与えますが、descendantnodesは、それを呼び出すノードの子孫ノードを提供します。

あなたはもっぱらNodes方法あなたを使用した場合、あなたは

XDocument doc = XDocument.Parse(@"<!-- comment 1 --> 
<root> 
<!-- comment 2 --> 
    <foo> 
    <!-- comment 3 --> 
    <bar><!-- comment 4 --></bar> 
    </foo> 
</root> 
<!-- comment 5 -->"); 

    foreach (XComment comment in doc.DescendantNodes().OfType<XComment>()) 
    { 
     Console.WriteLine(comment.Value); 
    } 

を行うことができ、あなたは、ネストのいくつかのレベルで処理したいとあなたはすべてのレベルですべてのコメントノードを検索したいXML文書を持っている想像してみてすべてのコメントノードを見つけるための再帰的なメソッドを記述する必要があります。

関連する問題