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


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

См. также

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

Общие сведения о программирования LINQ to XML