Câu trả lời:
Elementschỉ tìm thấy những yếu tố là con cháu trực tiếp , tức là trẻ em ngay lập tức.
Descendants tìm thấy trẻ em ở mọi cấp độ, ví dụ như trẻ em, cháu lớn, v.v ...
Dưới đây là một ví dụ chứng minh sự khác biệt:
<?xml version="1.0" encoding="utf-8" ?>
<foo>
<bar>Test 1</bar>
<baz>
<bar>Test 2</bar>
</baz>
<bar>Test 3</bar>
</foo>
Mã số:
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);
}
Kết quả:
Các yếu tố: Kiểm tra 1 Các yếu tố: Kiểm tra 3 Hậu duệ: Kiểm tra 1 Hậu duệ: Thử nghiệm 2 Hậu duệ: Kiểm tra 3
Nếu bạn biết rằng các yếu tố bạn muốn là trẻ em ngay lập tức thì bạn sẽ có hiệu suất tốt hơn nếu bạn sử dụng Elementsthay vì Descendants.
Descendantssẽ tìm kiếm toàn bộ cây con của phần tử hiện tại cho tên được chỉ định (hoặc sẽ trả về một phiên bản dẹt của cây nếu không có tên nào được cung cấp), trong khi Elementschỉ tìm kiếm các phần tử con của phần tử hiện tại.