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


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

Атрибуты - это пары «имя-значение», ассоциированные с элементом. Класс XAttribute представляет XML-атрибуты.

Обзор

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

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

Конструктор XAttribute

Чаще всего используется следующий конструктор класса XAttribute.

Конструктор

Описание

XAttribute(XName name, object content)

Создает объект XAttribute. Аргумент name указывает имя атрибута; content указывает содержимое атрибута.

Создание элемента с атрибутом

Следующий код иллюстрирует типичную задачу создания элемента, содержащего атрибут:

XElement phone = new XElement("Phone",
    new XAttribute("Type", "Home"),
    "555-555-5555");
Console.WriteLine(phone);

С помощью Visual Basic можно создавать литералы XML:

Dim phone As XElement = <Phone Type="Home">555-555-5555</Phone>
Console.WriteLine(phone)

В этом примере выводятся следующие данные:

<Phone Type="Home">555-555-5555</Phone>

Функциональное построение атрибутов

Объекты XAttribute можно создавать в процессе создания объектов XElement следующим образом:

XElement c = new XElement("Customers",
    new XElement("Customer",
        new XElement("Name", "John Doe"),
        new XElement("PhoneNumbers",
            new XElement("Phone",
                new XAttribute("type", "home"),
                "555-555-5555"),
            new XElement("Phone",
                new XAttribute("type", "work"),
                "666-666-6666")
        )
    )
);
Console.WriteLine(c);
Dim c As XElement = _
    <Customers>
        <Customer>
            <Name>John Doe</Name>
            <PhoneNumbers>
                <Phone type="home">555-555-5555</Phone>
                <Phone type="work">666-666-6666</Phone>
            </PhoneNumbers>
        </Customer>
    </Customers>
Console.WriteLine(c)

В этом примере выводятся следующие данные:

<Customers>
  <Customer>
    <Name>John Doe</Name>
    <PhoneNumbers>
      <Phone type="home">555-555-5555</Phone>
      <Phone type="work">666-666-6666</Phone>
    </PhoneNumbers>
  </Customer>
</Customers>

Атрибуты не являются узлами

Между атрибутами и элементами имеются существенные различия. Объекты XAttribute не являются узлами в дереве XML. Они представляют собой пары «имя-значение», ассоциированные с элементом XML. В отличие от модели DOM, это более точно отражает структуру XML. Хотя объекты XAttribute фактически не являются узлами XML-дерева, работа с объектами XAttribute весьма напоминает работу с объектами XElement.

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

См. также

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

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