Como recuperar o valor de um atributo (LINQ to XML)
Este tópico mostra como obter o valor de atributos. Existem duas maneiras principais: converter XAttribute no tipo desejado; o operador de conversão explícita converte o conteúdo do elemento ou do atributo no tipo especificado. Outra opção é usar a propriedade Value. No entanto, a conversão geralmente é a abordagem recomendada. Se você converter o atributo em um tipo anulável, o código será mais simples de criar ao recuperar o valor de um atributo que pode ou não existir. Para ver exemplos dessa técnica, consulte Como recuperar o valor de um elemento (LINQ to XML).
Exemplo
Para recuperar o valor de um atributo, basta converter o objeto XAttribute no tipo desejado.
Em Visual Basic, você pode usar a propriedade de atributo integrado para recuperar o valor de um atributo.
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)
Este exemplo gera a seguinte saída:
<Root Attr="abcde" />
abcde
Em Visual Basic, você pode usar a propriedade de atributo integrado para definir o valor de um atributo. Além disso, se você usar a propriedade de atributo integrado para definir o valor de um atributo que não existe, o atributo será criado.
Dim root As XElement = <Root Att1="content"/>
root.@Att1 = "new content"
root.@Att2 = "new attribute"
Console.WriteLine(root)
Este exemplo gera a seguinte saída:
<Root Att1="new content" Att2="new attribute" />
O exemplo a seguir mostra como recuperar o valor de um atributo em que o atributo está em um namespace. Para obter mais informações, consulte Trabalhando com namespaces 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
Este exemplo gera a seguinte saída:
abcde