Propriedade de eixo do atributo XML (Visual Basic)

Fornece acesso ao valor de um atributo para um objeto XElement ou para o primeiro elemento em uma coleção de objetos XElement.

Sintaxe

object.@attribute
' -or-
object.@<attribute>

Partes

object Necessário. Um objeto XElement ou uma coleção de objetos XElement.

.@ Obrigatório. Denota o início de uma propriedade do eixo de atributo.

< Opcional. Denota o início do nome do atributo quando attribute não é um identificador válido no Visual Basic.

attribute Necessário. Nome do atributo a ser acessado, do formulário [prefix:]name.

Parte Descrição
prefix Opcional. O prefixo do namespace XML para o atributo. Deve ser um namespace XML global definido com uma instrução Imports.
name Obrigatórios. Nome do Atributo local. Confira Nomes de elementos e atributos XML declarados.

> Opcional. Denota o fim do nome do atributo quando attribute não é um identificador válido no Visual Basic.

Valor Retornado

Uma cadeia de caracteres que contém o valor de attribute. Se o nome do atributo não existir, Nothing será retornado.

Comentários

Você pode usar uma propriedade do eixo de atributo XML para acessar o valor de um atributo por nome de um objeto XElement ou do primeiro elemento em uma coleção de objetos XElement. Você pode recuperar um valor de atributo por nome ou adicionar um novo atributo a um elemento especificando um novo nome precedido pelo identificador @.

Quando você se refere ao atributo XML usando o identificador @, o valor do atributo é retornado como uma cadeia de caracteres, e você não precisa especificar explicitamente a propriedade Value.

As regras de nomenclatura para atributos XML diferem das regras de nomenclatura para identificadores do Visual Basic. Para acessar um atributo XML que tenha um nome que não seja um identificador válido do Visual Basic, coloque o nome entre colchetes angulares (< e >).

Namespaces de XML

O nome em uma propriedade de eixo de atributo pode usar apenas prefixos de namespace de XML declarados globalmente usando a instrução Imports. Ele não pode usar prefixos de namespace de XML declarados localmente em literais de elemento XML. Para obter mais informações, confira Instrução Imports (namespace de XML).

Exemplo 1

O exemplo a seguir mostra como obter os valores dos atributos XML nomeados type de uma coleção de elementos XML nomeados phone.

' Topic: XML Attribute Axis Property
Dim phones As XElement = 
    <phones>
        <phone type="home">206-555-0144</phone>
        <phone type="work">425-555-0145</phone>
    </phones>

Dim phoneTypes As XElement = 
  <phoneTypes>
      <%= From phone In phones.<phone> 
          Select <type><%= phone.@type %></type> 
      %>
  </phoneTypes>

Console.WriteLine(phoneTypes)

Este código exibe o seguinte texto:

<phoneTypes>

<type>home</type>

<type>work</type>

</phoneTypes>

Exemplo 2

O exemplo a seguir mostra como criar atributos para um elemento XML declarativamente, como parte do XML e dinamicamente adicionando um atributo a uma instância de um objeto XElement. O atributo type é criado declarativamente e o atributo owner é criado dinamicamente.

Dim phone2 As XElement = <phone type="home">206-555-0144</phone>
phone2.@owner = "Harris, Phyllis"

Console.WriteLine(phone2)

Este código exibe o seguinte texto:

<phone type="home" owner="Harris, Phyllis">206-555-0144</phone>

Exemplo 3

O exemplo a seguir usa a sintaxe de colchete angular para obter o valor do atributo XML nomeado number-type, que não é um identificador válido no Visual Basic.

Dim phone As XElement = 
     <phone number-type=" work">425-555-0145</phone>

 Console.WriteLine("Phone type: " & phone.@<number-type>)

Este código exibe o seguinte texto:

Phone type: work

Exemplo 4

O exemplo a seguir declara ns como um prefixo de namespace de XML. Em seguida, ele usa o prefixo do namespace para criar um literal XML e acessar o primeiro nó filho com o nome qualificado "ns:name".

Imports <xmlns:ns = "http://SomeNamespace"> 
 
Class TestClass3

    Shared Sub TestPrefix()
        Dim phone = 
            <ns:phone ns:type="home">206-555-0144</ns:phone>

        Console.WriteLine("Phone type: " & phone.@ns:type)
    End Sub

End Class

Este código exibe o seguinte texto:

Phone type: home

Confira também