В чем разница между Linq и потомками XML и элементами

Я столкнулся с этими двумя ключевыми словами в VS IntelliSense. Я пытался разыграть разницу между ними и не получил четкого ответа. Какой из них имеет лучшую производительность с небольшими и средними XML-файлами. благодаря

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 ищет только непосредственные дочерние элементы текущего элемента.

  • Ошибки XML-рендеринга Предварительный просмотр Android N
  • Как выбрать узлы XML с пространствами имен XML из XmlDocument?
  • Что означает X в ASPX, DOCX, XLSX, PPTX и т. Д.?
  • Как я могу построить XML в C #?
  • Можно ли использовать динамическое выражение xPath в таблице стилей xslt?
  • получить номер строки для XElement здесь
  • Условная сериализация XML
  • Как добавить изображение в текст TextView?
  • XPath для выбора элемента по значению атрибута
  • Итерирование атрибутов элементов с помощью jQuery
  • Создание XML-файла с использованием XDocument в C #
  • Давайте будем гением компьютера.