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


Как извлечь значение атрибута (LINQ to XML)

В этом разделе показано получение значений атрибутов. Существует два основных способа. Можно привести XAttribute к требуемому типу, после этого оператор явного преобразования преобразует содержимое элемента или атрибута в указанный тип. Иначе можно использовать свойство Value. Однако приведение, как правило, является лучшим подходом. В частности, становится проще написание кода, обеспечивающего получение значения атрибута, который может существовать или не существовать, после приведения атрибута к типу, допускающему значение NULL. Примеры применения этого способа см. в разделе Как извлечь значение элемента (LINQ to XML).

Пример

Для получения значения атрибута нужно просто привести объект XAttribute к желаемому типу.

В Visual Basic для получения значения атрибута можно использовать встроенное свойство атрибута.

XElement root = new XElement("Root",
                    new XAttribute("Attr", "abcde")
                );
Console.WriteLine(root);
string str = (string)root.Attribute("Attr");
Console.WriteLine(str);
Dim root As XElement = <Root Attr="abcde"/>
Console.WriteLine(root)
Dim str As String = root.@Attr
Console.WriteLine(str)

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

<Root Attr="abcde" />
abcde

В Visual Basic для установки значения атрибута можно использовать встроенное свойство атрибута. Далее в случае использования встроенного свойства атрибута для установки значения несуществующего атрибута этот атрибут будет создан.

Dim root As XElement = <Root Att1="content"/>
root.@Att1 = "new content"
root.@Att2 = "new attribute"
Console.WriteLine(root)

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

<Root Att1="new content" Att2="new attribute" />

В следующем примере показано, как получить значение атрибута, если атрибут находится в пространстве имен. Для получения дополнительной информации см. Работа с пространствами имен XML.

XNamespace aw = "https://www.adventure-works.com";
XElement root = new XElement(aw + "Root",
                    new XAttribute(aw + "Attr", "abcde")
                );
string str = (string)root.Attribute(aw + "Attr");
Console.WriteLine(str);
Imports <xmlns:aw="https://www.adventure-works.com">

Module Module1
    Sub Main()
        Dim root As XElement = <aw:Root aw:Attr="abcde"/>
        Dim str As String = root.@aw:Attr
        Console.WriteLine(str)
    End Sub
End Module

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

abcde

См. также

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

Оси LINQ to XML