Общие сведения о классе 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".

См. также