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