Propriété d'axe d'attribut XML (Visual Basic)

Fournit l’accès à la valeur d’un attribut pour un objet XElement ou au premier élément d’une collection d’objets XElement.

Syntaxe

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

Éléments

object Obligatoire. Un objet XElement ou une collection d’objets XElement.

.@ Obligatoire. Indique le début d’une propriété d’axe attribut.

< Facultatif. Indique le début du nom de l’attribut quand attribute n’est pas un identificateur valide en Visual Basic.

attribute Obligatoire. Nom de l’attribut à accéder, au format [prefix:]name.

Élément Description
prefix facultatif. Préfixe de l’espace de nom XML pour l’attribut. Doit être un espace de noms XML global défini avec une instruction Imports.
name Obligatoire. Nom de l’attribut local. Consultez Nom des attributs et des éléments XML déclarés.

> Facultatif. Indique la fin du nom de l’attribut quand attribute n’est pas un identificateur valide en Visual Basic.

Valeur renvoyée

Chaîne qui contient la valeur de attribute. Si le nom de l’attribut n’existe pas, Nothing est retourné.

Notes

Vous pouvez utiliser une propriété d’axe d’attribut XML pour accéder à la valeur d’un attribut par son nom à partir d’un objet XElement ou du premier élément d’une collection d’objets XElement. Vous pouvez récupérer une valeur d’attribut par nom ou ajouter un nouvel attribut à un élément en spécifiant un nouveau nom précédé de l’identificateur @.

Lorsque vous faites référence à un attribut XML à l’aide de l’identificateur @, la valeur de l’attribut est retournée sous forme de chaîne et vous n’avez pas besoin de spécifier explicitement la propriété Value.

Les règles de nommage pour les attributs XML diffèrent des règles de nommage pour les identificateurs Visual Basic. Pour accéder à un attribut XML dont le nom n’est pas un identificateur Visual Basic valide, placez le nom entre chevrons (< et >).

Espaces de noms XML

Le nom inclus dans une propriété d’axe attribut peut utiliser uniquement des préfixes d’espace de noms XML déclarés globalement à l’aide de l’instruction Imports. Il ne peut pas utiliser des préfixes d'espace de noms XML déclarés localement dans des littéraux d'éléments XML. Pour plus d’informations, consultez Imports, instruction (espace de noms XML).

Exemple 1

L’exemple suivant montre comment obtenir les valeurs des attributs XML nommés type à partir d’une collection d’éléments XML nommés 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)

Ce code affiche le texte suivant :

<phoneTypes>

<type>home</type>

<type>work</type>

</phoneTypes>

Exemple 2

L’exemple suivant montre comment créer des attributs pour un élément XML à la fois de manière déclarative, dans le cadre du code XML, et dynamiquement en ajoutant un attribut à une instance d’un objet XElement. L’attribut type est créé de manière déclarative et l’attribut owner est créé dynamiquement.

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

Console.WriteLine(phone2)

Ce code affiche le texte suivant :

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

Exemple 3

L’exemple suivant utilise la syntaxe entre chevrons pour obtenir la valeur de l’attribut XML nommé number-type, qui n’est pas un identificateur valide en Visual Basic.

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

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

Ce code affiche le texte suivant :

Phone type: work

Exemple 4

L'exemple suivant déclare ns en tant que préfixe d'espace de noms XML. Il utilise ensuite le préfixe de l’espace de noms pour créer un littéral XML et accéder au premier nœud enfant avec le nom qualifié « 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

Ce code affiche le texte suivant :

Phone type: home

Voir aussi