Yanıtlar:
Elements
yalnı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, Elements
yerine kullanmak yerine daha iyi performans elde edersiniz Descendants
.
Descendants
geç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 Elements
geçerli öğenin yalnızca hemen alt öğelerini arar.