Поделиться через


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

Обновлен: November 2007

После создания 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> объекта XAttribute. Эти коллекции нужны для выполнения запросов.

В дополнение к методам оси, получающим коллекции элементов и атрибутов, существуют методы оси, которые позволяют проходить по всему дереву максимально подробно. Например, вместо того чтобы иметь дело с элементами и атрибутами, можно работать с узлами дерева. Узлы — это более глубокий уровень гранулярности, чем элементы и атрибуты. При работе с узлами можно просматривать комментарии XML, текстовые узлы XML, инструкции по обработке 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.

См. также

Основные понятия

Оси LINQ to XML