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


Общие сведения о классе XElement

Класс XElement является одним из основных классов в LINQ to XML. Он представляет XML-элемент. В следующем списке показано, для чего можно использовать этот класс:

  • Создание элементов.
  • Измените содержимое элемента.
  • Добавление, изменение или удаление дочерних элементов.
  • Добавьте атрибуты в элемент.
  • Сериализуйте содержимое элемента в текстовой форме.

Вы также можете взаимодействовать с другими классами, System.Xmlтакими как XmlReader, XmlWriterи XslCompiledTransform.

В этой статье описаны функциональные возможности, предоставляемые классом XElement .

Создание деревьев XML

Деревья XML можно создавать разными способами, включая следующие:

  • Дерево XML можно создать в коде. Дополнительные сведения см. в деревах XML.
  • Вы можете проанализировать XML из различных источников, включая TextReaderтекстовые файлы или URL-адрес. Дополнительные сведения см. в разделе "Анализ XML".
  • Вы можете использовать XmlReader для заполнения дерева. Дополнительные сведения см. в разделе ReadFrom.
  • Если у вас есть модуль, который может записывать содержимое в XmlWriter, можно использовать метод CreateWriter для создания записывающего устройства, передать это устройство в модуль, а затем использовать содержимое, записанное в 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-данных с помощью методов Axis

Методы оси можно использовать для получения атрибутов, дочерних элементов, элементов-потомков и элементов-предков. Запросы LINQ to XML используют методы осей и предоставляют несколько мощных и гибких способов навигации и обработки XML-дерева.

Дополнительные сведения см. в обзоре осей LINQ to XML.

Деревья XML запросов

Вы можете записывать запросы LINQ to XML, извлекающие данные из дерева XML.

Дополнительные сведения см. в разделе "Общие сведения о деревах ЗАПРОСОВ XML".

Изменение деревьев XML

Элемент можно изменить разными способами, включая изменение его содержимого или атрибутов. Вы также можете удалить элемент из родительского элемента.

Дополнительные сведения см. в разделе "Изменение деревьев XML".

См. также