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