जवाबों:
Elementsकेवल उन तत्वों को खोजता है जो प्रत्यक्ष वंशज हैं, अर्थात तत्काल बच्चे।
Descendants बच्चों को किसी भी स्तर पर पाया जाता है, अर्थात बच्चे, ग्रैंड-चिल्ड्रेन, आदि ...
यहाँ एक उदाहरण है जो अंतर प्रदर्शित करता है:
<?xml version="1.0" encoding="utf-8" ?>
<foo>
<bar>Test 1</bar>
<baz>
<bar>Test 2</bar>
</baz>
<bar>Test 3</bar>
</foo>
कोड:
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);
}
परिणाम:
तत्व: टेस्ट १ तत्व: टेस्ट 3 वंशज: टेस्ट १ उतर: टेस्ट २ उतर: टेस्ट 3
यदि आप जानते हैं कि आप चाहते हैं कि तत्व तत्काल बच्चे हैं, तो आप बेहतर प्रदर्शन करेंगे यदि आप Elementsइसके बजाय उपयोग करते हैं Descendants।
Descendantsनिर्दिष्ट नाम के लिए वर्तमान तत्व के पूरे उपशीर्षक को खोजेगा (या यदि कोई नाम नहीं दिया गया है तो पेड़ का एक चपटा संस्करण लौटाएगा), जबकि Elementsवर्तमान तत्व के केवल तत्काल बच्चों की खोज करता है।