Jawaban:
Elements
hanya menemukan unsur-unsur yang merupakan keturunan langsung , yaitu anak-anak langsung.
Descendants
menemukan anak-anak di tingkat mana pun, yaitu anak-anak, cucu, dll ...
Berikut adalah contoh yang menunjukkan perbedaan:
<?xml version="1.0" encoding="utf-8" ?>
<foo>
<bar>Test 1</bar>
<baz>
<bar>Test 2</bar>
</baz>
<bar>Test 3</bar>
</foo>
Kode:
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);
}
Hasil:
Elemen: Uji 1 Elemen: Tes 3 Keturunan: Tes 1 Keturunan: Tes 2 Keturunan: Tes 3
Jika Anda tahu bahwa unsur-unsur yang Anda inginkan adalah anak-anak segera maka Anda akan mendapatkan kinerja yang lebih baik jika Anda menggunakan Elements
bukan Descendants
.
Descendants
akan mencari seluruh subtree elemen saat ini untuk nama yang ditentukan (atau akan mengembalikan versi pohon yang rata jika tidak ada nama yang diberikan), sedangkan Elements
mencari hanya anak-anak langsung dari elemen saat ini.