Yanıtlar:
Elementsyalnızca doğrudan soyundan gelen unsurları bulur , yani derhal çocuklar.
Descendants Herhangi bir düzeyde çocuk bulur, yani çocuklar, büyük çocuklar, vb ...
İşte farkı gösteren bir örnek:
<?xml version="1.0" encoding="utf-8" ?>
<foo>
<bar>Test 1</bar>
<baz>
<bar>Test 2</bar>
</baz>
<bar>Test 3</bar>
</foo>
Kod:
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);
}
Sonuç:
Öğeler: Test 1 Öğeler: Test 3 Torunları: Test 1 Torunları: Test 2 Torunları: Test 3
İstediğiniz öğelerin hemen çocuk olduğunu biliyorsanız, Elementsyerine kullanmak yerine daha iyi performans elde edersiniz Descendants.
Descendantsgeçerli öğenin tüm alt ağacını belirtilen ad için arar (veya ad yoksa, ağacın düzleştirilmiş bir sürümünü döndürür), ancak Elementsgeçerli öğenin yalnızca hemen alt öğelerini arar.