উত্তর:
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);
}
ফলাফল:
উপাদানসমূহ: পরীক্ষা 1 উপাদানসমূহ: পরীক্ষা 3 বংশধর: পরীক্ষা 1 বংশদ্ভুত: পরীক্ষা 2 বংশদ্ভুত: পরীক্ষা 3
আপনি যদি জানেন যে যে উপাদানগুলি আপনি চান তা তাত্ক্ষণিক শিশু তবে আপনি যদি এর Elementsপরিবর্তে ব্যবহার করেন তবে আপনি আরও ভাল পারফরম্যান্স পাবেন Descendants।
Descendantsনির্দিষ্ট নামের জন্য বর্তমান উপাদানটির পুরো সাবট্রিটি অনুসন্ধান করবে (বা কোনও নাম না দেওয়া থাকলে গাছের সমতল সংস্করণটি ফিরিয়ে দেবে), তবে Elementsকেবলমাত্র বর্তমান উপাদানটির তাত্ক্ষণিক শিশুদের অনুসন্ধান করবে।