Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Атрибуты — это пары "имя-значение", связанные с элементом. Класс 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);
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-дереве, работа с объектами аналогична работе с XAttributeXElement объектами.
Это различие в первую очередь важно только для разработчиков, которые пишут код, который работает с деревьями XML на уровне узла. Многие разработчики не будут обеспокоены этим различием.