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


Практическое руководство. Извлечение значений атрибута (LINQ to XML)

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

Пример. Использование приведения для получения значения атрибута

Чтобы получить значение атрибута в C#, необходимо привести 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

Пример. Использование приведения для извлечения из XML, который находится в пространстве имен

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

XNamespace aw = "http://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="http://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

См. также