Общие сведения об осях LINQ to XML

После создания xml-дерева или загрузки XML-документа в xml-дерево его можно запросить, чтобы найти элементы и атрибуты и получить их значения. Вы извлекаете коллекции с помощью методов доступа к осям, которые также называются осями. Некоторые из осей — это методы в XElement и XDocument классах, возвращающих IEnumerable<T> коллекции. Некоторые оси — это методы расширения в Extensions классе. Оси, реализованные как методы расширения, работают с коллекциями и возвращают коллекции.

Как описано в обзоре класса XElement, XElement объект представляет один узел элемента. Содержимое элемента может быть сложным (иногда называемым структурированным содержимым) или простым элементом. Простой элемент может быть пустым или содержать значение. Если узел содержит структурированное содержимое, можно использовать различные методы оси для получения перечислений элементов-потомков. Наиболее часто используемые методы оси — это Elements и Descendants.

Помимо методов оси, возвращающих коллекции, существует еще два метода, которые обычно используются в запросах LINQ to XML. Метод Element возвращает один XElement. Метод Attribute возвращает один XAttribute.

Во многих целях запросы LINQ обеспечивают наиболее эффективный способ изучения дерева, извлечения данных из него и преобразования. Запросы LINQ работают с объектами, которые реализуют IEnumerable<T>, а оси LINQ to XML возвращают коллекции IEnumerable<T>, а также коллекции XElement в IEnumerable<T>. Эти коллекции необходимы для выполнения запросов.

Помимо методов оси, которые извлекают коллекции элементов и атрибутов, существуют методы, позволяющие более подробно выполнить итерацию по дереву. Например, вместо работы с элементами и атрибутами можно работать с узлами дерева. Узлы — это более точный уровень детализации, чем элементы и атрибуты. При работе с узлами можно просмотреть XML-комментарии, текстовые узлы, инструкции по обработке и многое другое. Эта функция важна, например, для тех, кто пишет текстовый процессор и хочет сохранить документы в формате XML. Однако большинство программистов XML в основном связаны с элементами, атрибутами и их значениями.

Методы получения коллекции элементов

Следующее является сводкой методов класса XElement (или его базовых классов), которые вы вызываете на XElement для возврата коллекции элементов.

Метод Описание
XNode.Ancestors Возвращает IEnumerable<T> из XElement предков этого элемента. Перегрузка возвращает IEnumerable<T> из XElement предков, имеющих указанный параметр XName.
XContainer.Descendants Возвращает элемент IEnumerable<T> из XElement потомков этого элемента. Перегрузка возвращает IEnumerable<T> из XElement потомков, имеющих указанный объект XName.
XContainer.Elements Возвращает IEnumerable<T> из XElement дочерних элементов этого элемента. Перегрузка возвращает IEnumerable<T> из XElement дочерних элементов, которые имеют указанный XName.
XNode.ElementsAfterSelf Возвращает IEnumerable<T> и XElement элементов, которые следуют за этим элементом. Перегрузка возвращает IEnumerable<T> значений XElement элементов, следующих за данным элементом, которые имеют указанный XName.
XNode.ElementsBeforeSelf Возвращает IEnumerable<T> из XElement элементов, которые расположены перед этим элементом. Перегрузка возвращает IEnumerable<T>XElement для элементов перед этим элементом, которые имеют заданный XName.
XElement.AncestorsAndSelf Возвращает IEnumerable<T>XElement для этого элемента и его предков. Перегрузка возвращает IEnumerable<T> из XElement элементов, у которых задано XName.
XElement.DescendantsAndSelf Возвращает IEnumerable<T> от XElement этого элемента и его потомков. Перегрузка возвращает IEnumerable<T> из XElement элементов, у которых задано XName.

Метод извлечения одного элемента

Следующий метод извлекает один дочерний XElement элемент из объекта.

Метод Описание
XContainer.Element Возвращает первый дочерний XElement объект, имеющий указанный XName.

Метод получения коллекции атрибутов

Следующий метод извлекает атрибуты из XElement объекта.

Метод Описание
XElement.Attributes Возвращает IEnumerable<T> из XAttribute, содержащий все атрибуты.

Метод получения одного атрибута

Следующий метод извлекает один атрибут из XElement объекта.

Метод Описание
XElement.Attribute Возвращает XAttribute, который имеет указанный XName.