xdocument tutorial query net example ejemplos descendants c#-4.0 .net-4.0 linq-to-xml

c# 4.0 - tutorial - Nodos() vs DescendantNodes() usos?



xelement c# example (1)

Well nodes le proporciona los nodos secundarios del nodo al que lo llama, mientras que descenddantnodes le proporciona los nodos descendientes del nodo al que lo llama.

Imagine que tiene un documento XML que desea procesar con varios niveles de anidamiento y desea buscar todos los nodos de comentarios en todos los niveles, luego puede hacer

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); }

Si utilizó únicamente el método Nodes , necesitaría escribir un método recursivo para buscar todos los nodos de comentarios.

Leí que los Nodes () emiten todos los nodos, incluido el sub.

y DescendantNodes () lo mismo pero de forma recursiva.

sin embargo, no puedo encontrar ninguna situación en la que necesite la forma recursiva ...

¿Cuándo debería preferir trabajar con DescendantNodes () sobre Nodes ()?

es decir:

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

salida:

pregunta:

¿Por qué lo necesito recursivamente dividido, cuando puedo trabajar con Nodes ()?