Общие сведения о классе XElement
Класс XElement является одним из основных классов в LINQ to XML. Он обозначает элемент XML. В следующем списке показано, для чего можно использовать этот класс:
- Создание элементов.
- Измените содержимое элемента.
- Добавление, изменение или удаление дочерних элементов.
- Добавьте атрибуты в элемент.
- Сериализуйте содержимое элемента в текстовой форме.
Можно также настроить взаимодействие с другими классами в System.Xml, например XmlReader, XmlWriter и XslCompiledTransform.
В этой статье описаны функциональные возможности, предоставляемые классом XElement .
Создание деревьев XML
Деревья XML можно создавать разными способами, включая следующие:
- Можно создать XML-дерево при помощи кода. Дополнительные сведения см. в деревах XML.
- Можно выполнить синтаксический анализ XML из нескольких источников, в том числе из TextReader, текстовых файлов или веб-адреса (URL-адреса). Дополнительные сведения см. в разделе "Анализ XML".
- Для распределения контента по дереву можно использовать XmlReader. Дополнительные сведения см. в разделе ReadFrom.
- Если у вас есть модуль, который может записывать содержимое в модуль, можно использовать CreateWriter метод для создания модуля записи, передачи записи в модуль, а затем использовать содержимоеXmlWriter, записанное в XmlWriter дерево XML.
В следующем примере создается дерево. Версия C# использует вложенные элементы. Вы можете использовать тот же метод в Visual Basic, но в этом примере используются 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 to XML для заполнения дерева 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 to XML работают с методами оси и предоставляют несколько гибких и мощных способов навигации и обработки XML-дерева.
Дополнительные сведения см. в обзоре осей LINQ to XML.
Деревья XML запросов
Вы можете записывать запросы LINQ to XML, извлекающие данные из дерева XML.
Дополнительные сведения см. в разделе "Общие сведения о деревах ЗАПРОСОВ XML".
Изменение деревьев XML
Элемент можно изменить разными способами, включая изменение его содержимого или атрибутов. Можно также удалить элемент из родительской структуры.
Дополнительные сведения см. в разделе "Изменение деревьев XML".