Общие сведения о классе XElement
Класс XElement - это один из фундаментальных классов в LINQ to XML. Он обозначает элемент XML. Этот класс можно использовать для создания элементов, изменения содержимого элемента, добавления, изменения или удаления дочерних элементов, добавления к элементам атрибутов или сериализации содержимого элемента в текстовой форме. Можно также настроить взаимодействие с другими классами в System.Xml, например XmlReader, XmlWriter и XslCompiledTransform.
Функциональные особенности класса XElement
В этом разделе рассматриваются функциональные особенности класса XElement.
Создание XML-деревьев
Можно создавать XML-деревья несколькими способами.
Можно создать XML-дерево при помощи кода. Для получения дополнительной информации см. Создание XML-деревьев.
Можно выполнить синтаксический анализ XML из нескольких источников, в том числе из TextReader, текстовых файлов или веб-адреса (URL-адреса). Для получения дополнительной информации см. Синтаксический анализ XML.
Для распределения контента по дереву можно использовать XmlReader. Для получения дополнительной информации см. ReadFrom.
Если установлен модуль, позволяющий заносить содержимое в средство XmlWriter, то можно использовать метод CreateWriter, чтобы создать модуль записи, передать его этому модулю, после чего использовать контент, записанный в систему XmlWriter, чтобы заполнить XML-дерево.
Однако наиболее распространенным является такой метод создания XML-дерева:
XElement contacts =
new XElement("Contacts",
new XElement("Contact",
new XElement("Name", "Patrick Hines"),
new XElement("Phone", "206-555-0144"),
new XElement("Address",
new XElement("Street1", "123 Main St"),
new XElement("City", "Mercer Island"),
new XElement("State", "WA"),
new XElement("Postal", "68042")
)
)
);
Dim contacts As XElement = _
<Contacts>
<Contact>
<Name>Patrick Hines</Name>
<Phone>206-555-0144</Phone>
<Address>
<Street1>123 Main St</Street1>
<City>Mercer Island</City>
<State>WA</State>
<Postal>68042</Postal>
</Address>
</Contact>
</Contacts>
Другим распространенным способом создания XML-дерева является использование результатов запроса LINQ для заполнения XML-дерева, как это показано на следующем примере:
XElement srcTree = new XElement("Root",
new XElement("Element", 1),
new XElement("Element", 2),
new XElement("Element", 3),
new XElement("Element", 4),
new XElement("Element", 5)
);
XElement xmlTree = new XElement("Root",
new XElement("Child", 1),
new XElement("Child", 2),
from el in srcTree.Elements()
where (int)el > 2
select el
);
Console.WriteLine(xmlTree);
Dim srcTree As XElement = _
<Root>
<Element>1</Element>
<Element>2</Element>
<Element>3</Element>
<Element>4</Element>
<Element>5</Element>
</Root>
Dim xmlTree As XElement = _
<Root>
<Child>1</Child>
<Child>2</Child>
<%= From el In srcTree.Elements() _
Where el.Value > 2 _
Select el %>
</Root>
Console.WriteLine(xmlTree)
В этом примере выводятся следующие данные:
<Root>
<Child>1</Child>
<Child>2</Child>
<Element>3</Element>
<Element>4</Element>
<Element>5</Element>
</Root>
Сериализация деревьев XML
Можно сериализовать XML-дерево в File, TextWriter или в XmlWriter.
Для получения дополнительной информации см. Сериализация XML-деревьев.
Получение XML-данных через методы оси
Можно воспользоваться методами оси для получения свойств, дочерних элементов, элементов-потомков и элементов-предков. При выполнении запросов LINQ используются методы оси и обеспечиваются гибкие и эффективные способы навигации по XML-дереву, а также его обработки.
Для получения дополнительной информации см. Оси LINQ to XML.
Выполнение запросов деревьям XML
Можно написать LINQ запросы, по которым из XML-дерева будут извлекаться данные.
Для получения дополнительной информации см. Запрос к XML-деревьям.
Изменение деревьев XML
Один и тот же элемент можно изменить несколькими способами, в том числе изменив содержимое или атрибуты. Можно также удалить элемент из родительской структуры.
Для получения дополнительной информации см. Изменение XML-деревьев (LINQ to XML).