Partilhar via


Propriedade do eixo do atributo XML (Visual Basic)

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

Sintaxe

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

Partes

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

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

< Opcional. Indica 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 acessar, do formulário [prefix:]name.

Parte Description
prefix Opcional. Prefixo de namespace XML para o atributo. Deve ser um namespace XML global definido com uma Imports instrução.
name Obrigatório. Nome do atributo local. Consulte Nomes de elementos e atributos XML declarados.

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

Devolver Valor

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

Observações

Você pode usar uma propriedade de eixo de atributo XML para acessar o valor de um atributo por nome de um XElement objeto ou do primeiro elemento em uma coleção de XElement objetos. 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 a um atributo XML usando o identificador @, o valor do atributo é retornado como uma cadeia de caracteres e você não precisa especificar explicitamente a Value propriedade.

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 >).

XML Namespaces

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

Exemplo 1

O exemplo a seguir mostra como obter os valores dos atributos XML nomeados type de uma coleção de elementos XML que são 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 XElement objeto. O type atributo é criado declarativamente e o owner atributo é 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 chamado 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 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

Consulte também