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


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

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

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

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

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

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

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

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

Метод

Описание

XNode.Ancestors

Возвращает коллекцию IEnumerable предков экземпляра XElement. Перегрузка возвращает коллекцию IEnumerable предков экземпляра XElement, имеющих указанный атрибут XName.

XContainer.Descendants

Возвращает коллекцию IEnumerable потомков экземпляра XElement. Перегрузка возвращает коллекцию IEnumerable потомков экземпляра XElement, имеющих указанный атрибут XName.

XContainer.Elements

Возвращает коллекцию IEnumerable дочерних элементов экземпляра XElement. Перегрузка возвращает коллекцию IEnumerable дочерних элементов экземпляра XElement, имеющих указанный атрибут XName.

XNode.ElementsAfterSelf

Возвращает коллекцию IEnumerable элементов, идущих после экземпляра XElement. Перегрузка возвращает коллекцию IEnumerable элементов, идущих после экземпляра XElement, имеющих указанный атрибут XName.

XNode.ElementsBeforeSelf

Возвращает коллекцию IEnumerable элементов, идущих перед экземпляром XElement. Перегрузка возвращает коллекцию IEnumerable элементов, идущих перед экземпляром XElement, имеющих указанный атрибут XName.

XElement.AncestorsAndSelf

Возвращает коллекцию IEnumerable, состоящую из самого экземпляра XElement и его предков. Перегрузка возвращает IEnumerable из XElement для элементов с указанным XName.

XElement.DescendantsAndSelf

Возвращает коллекцию IEnumerable, состоящую из самого экземпляра XElement и его потомков. Перегрузка возвращает IEnumerable из XElement для элементов с указанным XName.

Метод получения одного элемента

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

Метод

Описание

XContainer.Element

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

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

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

Метод

Описание

XElement.Attributes

Возвращает коллекцию IEnumerable всех атрибутов XAttribute.

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

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

Метод

Описание

XElement.Attribute

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

См. также

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

Оси LINQ to XML