Общие сведения об осях 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>осями IEnumerable<T>XElement LINQ to XML, и IEnumerable<T> коллекциями XAttribute . Эти коллекции необходимы для выполнения запросов.

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

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

Ниже приведена сводка методов класса XElement (а также его базовых классов), которые можно вызвать в экземпляре XElement, чтобы вернуть коллекцию элементов.

Метод Description
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.

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

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

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

Метод Description
XElement.Attributes Возвращает коллекцию IEnumerable<T> всех атрибутов XAttribute.

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

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

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