В чем разница между потомками Linq to XML и элементами
Я столкнулся с обоими этими ключевыми словами в VS IntelliSense. Я попытался погуглить разницу между ними и не получил четкого ответа. Какой из них имеет лучшую производительность с небольшими и средними XML-файлами. Спасибо
2 ответа:
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); }
результат:
Elements : Test 1 Elements : Test 3 Descendants : Test 1 Descendants : Test 2 Descendants : Test 3если вы знаете, что элементы, которые вы хотите, являются непосредственными детьми, то вы получите лучше производительность если вы используете
Elements
вместоDescendants
.