Propiedad de eje para atributos XML (Visual Basic)

Proporciona acceso al valor de un atributo para un objeto XElement o al primer elemento de una colección de objetos XElement.

Sintaxis

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

Partes

object Obligatorio. Un objeto XElement o una colección de objetos XElement.

.@ obligatorio. Indica el inicio de una propiedad de eje para atributos.

< Opcional. Indica el principio del nombre del atributo cuando attribute no es un identificador válido en Visual Basic.

attribute Obligatorio. Nombre del atributo al que se va a acceder, con el formato [prefix:]name.

Parte Descripción
prefix Opcional. Prefijo de espacio de nombres XML para el atributo. Debe ser un espacio de nombres XML global definido con una instrucción Imports.
name Necesario. Nombre del atributo local. Vea Nombres de atributos y elementos XML declarados.

> Opcional. Indica el final del nombre del atributo cuando attribute no es un identificador válido en Visual Basic.

Valor devuelto

Cadena que contiene el valor de attribute. Si el nombre del atributo no existe, Nothing se devuelve.

Comentarios

Puede usar una propiedad de eje para atributos XML a fin de acceder al valor de un atributo por nombre desde un objeto XElement o desde el primer elemento de una colección de objetos XElement. Puede recuperar un valor de atributo por nombre o agregar un atributo nuevo a un elemento; para ello, especifique un nombre nuevo precedido por el identificador @.

Cuando se hace referencia an atributo XML mediante el identificador @, el valor del atributo se devuelve como una cadena y no es necesario especificar explícitamente la propiedad Value.

Las reglas de nomenclatura de los atributos XML difieren de las de los identificadores de Visual Basic. Para acceder a un atributo XML que tenga un nombre que no sea un identificador válido de Visual Basic, incluya el nombre entre corchetes angulares (< y >).

Espacios de nombres XML

El nombre de una propiedad de eje para atributos puede usar únicamente prefijos de espacios de nombres XML declarados globalmente mediante la instrucción Imports. No puede utilizar prefijos de espacio de nombres XML declarados localmente dentro de literales de elemento XML. Para obtener más información, consulte Imports (Instrucción, Espacio de nombres XML).

Ejemplo 1

En el ejemplo siguiente se muestra cómo obtener los valores de los atributos XML denominados type de una colección de elementos XML denominados 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 muestra el siguiente texto:

<phoneTypes>

<type>home</type>

<type>work</type>

</phoneTypes>

Ejemplo 2

En el ejemplo siguiente se muestra cómo crear atributos para un elemento XML mediante declaración, como parte del elemento XML, y de forma dinámica, agregando un atributo a una instancia de un objeto XElement. El atributo type se crea mediante declaración y el atributo owner se crea de forma dinámica.

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

Console.WriteLine(phone2)

Este código muestra el siguiente texto:

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

Ejemplo 3

En el ejemplo siguiente se usa la sintaxis del corchete angular para obtener el valor del atributo XML denominado number-type, que no es un identificador válido en Visual Basic.

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

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

Este código muestra el siguiente texto:

Phone type: work

Ejemplo 4

En el ejemplo siguiente se declara ns como un prefijo de espacio de nombres XML. Después, se usa el prefijo del espacio de nombres para crear un literal XML y acceder al primer nodo secundario con el nombre completo "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 muestra el siguiente texto:

Phone type: home

Consulte también