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. Lequel d'entre eux a les meilleures performances avec des fichiers XML petits à moyens. Merci
Réponses:
Elements
ne trouve que les éléments qui sont des descendants directs , c'est-à-dire des enfants immédiats.
Descendants
trouve des enfants à tous les niveaux, c'est-à-dire des enfants, des 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 les utilisez à la Elements
place de Descendants
.
Descendants
recherchera le nom spécifié dans tout le sous-arbre de l'élément courant (ou retournera une version aplatie de l'arborescence si aucun nom n'est fourni), tandis que Elements
ne recherche que les enfants immédiats de l'élément courant.