parse leer examples elementos c# .net xml linq-to-xml

leer - xelement to string c#



Cuál es la diferencia entre Linq a XML Descendientes y Elementos (2)

He encontrado estas dos palabras clave en VS IntelliSense. Traté de buscar en Google la diferencia entre ellos y no obtuve una respuesta clara. ¿Cuál de estos tiene el mejor rendimiento con archivos XML pequeños a medianos? Gracias


Elements encuentra solo aquellos elementos que son descendientes directos , es decir, hijos inmediatos.

Descendants encuentra niños en cualquier nivel, es decir, niños, nietos, etc.

Aquí hay un ejemplo que demuestra la diferencia:

<?xml version="1.0" encoding="utf-8" ?> <foo> <bar>Test 1</bar> <baz> <bar>Test 2</bar> </baz> <bar>Test 3</bar> </foo>

Código:

XDocument doc = XDocument.Load("input.xml"); XElement root = doc.Root; foreach (XElement e in root.Elements("bar")) { Console.WriteLine("Elements : " + e.Value); } foreach (XElement e in root.Descendants("bar")) { Console.WriteLine("Descendants : " + e.Value); }

Resultado:

Elements : Test 1 Elements : Test 3 Descendants : Test 1 Descendants : Test 2 Descendants : Test 3

Si sabe que los elementos que desea son hijos inmediatos, obtendrá un mejor rendimiento si utiliza Elements lugar de Descendants .


Descendants buscarán el subárbol completo del elemento actual para el nombre especificado (o devolverán una versión aplanada del árbol si no se proporciona ningún nombre), mientras que Elements buscará solo los Elements secundarios inmediatos del elemento actual.