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.