В чем разница между Linq и потомками XML и элементами
Я столкнулся с этими двумя ключевыми словами в VS IntelliSense. Я пытался разыграть разницу между ними и не получил четкого ответа. Какой из них имеет лучшую производительность с небольшими и средними XML-файлами. благодаря
- Как преобразовать XML в JSON с помощью C # / LINQ?
- В чем разница между текстом / xml vs application / xml для ответа webservice
- Сравнение Xml в C #
- Для чего нужны пространства имен XML?
- Как я могу разделить два файла XML?
- В чем разница между fx: id и id: в JavaFX?
- Java XML Parser для огромных файлов
- Как работает большой читатель RSS (netvibes, читатель Google ...)
Elements
находят только те элементы, которые являются прямыми потомками, то есть непосредственными детьми.
Descendants
находят детей на любом уровне, то есть детей, внуков и т. Д.
Вот пример, демонстрирующий разницу:
Test 1 Test 2 Test 3
Код:
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
ищет только непосредственные дочерние элементы текущего элемента.