J'ai rencontré ces deux mots-clés dans VS IntelliSense. J'ai essayé de googler la différence entre eux et je n'ai pas obtenu de réponse claire. Lesquels d’entre eux offrent les meilleures performances avec des fichiers XML de taille petite à moyenne. Merci
Elements
ne trouve que les éléments qui sont des descendants directs , c’est-à-dire des enfants immédiats.
Descendants
trouve les enfants à n’importe quel niveau, c’est-à-dire les enfants, les petits-enfants, etc.
Voici un exemple démontrant la différence:
<?xml version="1.0" encoding="utf-8" ?>
<foo>
<bar>Test 1</bar>
<baz>
<bar>Test 2</bar>
</baz>
<bar>Test 3</bar>
</foo>
Code:
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);
}
Résultat:
Éléments: Test 1 Éléments: Test 3 Descendants: Test 1 Descendants: Test 2 Descendants: Test 3
Si vous savez que les éléments souhaités sont des enfants immédiats, vous obtiendrez de meilleures performances si vous utilisez Elements
au lieu de Descendants
.
Descendants
cherchera le nom spécifié dans le sous-arbre entier de l'élément actuel (ou renverra une version aplatie de l'arbre si aucun nom n'est fourni), tandis que Elements
cherche uniquement les enfants immédiats du élément actuel.