Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les attributs sont des propriétés de l’élément, et non des enfants de l’élément. Cette distinction est importante en raison des méthodes utilisées pour naviguer entre les nœuds frères, parents et enfants du modèle DOM (Document Object Model). Par exemple, les méthodes PreviousSibling et NextSibling ne sont pas utilisées pour naviguer d’un élément vers un attribut ou entre des attributs. Au lieu de cela, un attribut est une propriété d’un élément et appartient à un élément, possède une propriété OwnerElement et non une propriété parentNode et possède des méthodes distinctes de navigation.
Lorsque le nœud actuel est un élément, utilisez la méthode HasAttribute pour voir s’il existe des attributs associés à l’élément. Une fois qu’il est connu qu’un élément a des attributs, il existe plusieurs méthodes d’accès aux attributs. Pour récupérer un attribut unique à partir de l’élément, vous pouvez utiliser les méthodes GetAttribute et GetAttributeNode de XmlElement ou obtenir tous les attributs dans une collection. L’obtention de la collection est utile s’il est nécessaire d’itérer sur la collection. Si vous souhaitez que tous les attributs de l’élément, utilisez la propriété Attributes de l’élément pour récupérer tous les attributs dans une collection.
Récupération de tous les attributs dans une collection
Si vous souhaitez que tous les attributs d’un nœud d’élément soient placés dans une collection, appelez la propriété XmlElement.Attributes . Obtient le XmlAttributeCollection qui contient tous les attributs d’un élément. La classe XmlAttributeCollection hérite de la carte XmlNamedNode . Par conséquent, les méthodes et propriétés disponibles sur la collection incluent celles disponibles sur un mappage de nœuds nommé en plus des méthodes et des propriétés spécifiques à la classe XmlAttributeCollection , telles que la propriété ItemOf ou la méthode Append . Chaque élément de la collection d’attributs représente un nœud XmlAttribute . Pour rechercher le nombre d’attributs sur un élément, obtenez XmlAttributeCollection et utilisez la propriété Count pour voir le nombre de nœuds XmlAttribute dans la collection.
L’exemple de code suivant montre comment récupérer une collection d’attributs et, à l’aide de la méthode Count pour l’index de bouclage, effectuez une itération sur celle-ci. Le code montre ensuite comment récupérer un attribut unique de la collection et afficher sa valeur.
Imports System.IO
Imports System.Xml
Public Class Sample
Public Shared Sub Main()
Dim doc As XmlDocument = New XmlDocument()
doc.LoadXml("<book genre='novel' ISBN='1-861001-57-5' misc='sale item'>" & _
"<title>The Handmaid's Tale</title>" & _
"<price>14.95</price>" & _
"</book>")
' Move to an element.
Dim myElement As XmlElement = doc.DocumentElement
' Create an attribute collection from the element.
Dim attrColl As XmlAttributeCollection = myElement.Attributes
' Show the collection by iterating over it.
Console.WriteLine("Display all the attributes in the collection...")
Dim i As Integer
For i = 0 To attrColl.Count - 1
Console.Write("{0} = ", attrColl.ItemOf(i).Name)
Console.Write("{0}", attrColl.ItemOf(i).Value)
Console.WriteLine()
Next
' Retrieve a single attribute from the collection; specifically, the
' attribute with the name "misc".
Dim attr As XmlAttribute = attrColl("misc")
' Retrieve the value from that attribute.
Dim miscValue As String = attr.InnerXml
Console.WriteLine("Display the attribute information.")
Console.WriteLine(miscValue)
End Sub
End Class
using System;
using System.IO;
using System.Xml;
public class Sample
{
public static void Main()
{
XmlDocument doc = new XmlDocument();
doc.LoadXml("<book genre='novel' ISBN='1-861001-57-5' misc='sale item'>" +
"<title>The Handmaid's Tale</title>" +
"<price>14.95</price>" +
"</book>");
// Move to an element.
XmlElement myElement = doc.DocumentElement;
// Create an attribute collection from the element.
XmlAttributeCollection attrColl = myElement.Attributes;
// Show the collection by iterating over it.
Console.WriteLine("Display all the attributes in the collection...");
for (int i = 0; i < attrColl.Count; i++)
{
Console.Write("{0} = ", attrColl[i].Name);
Console.Write("{0}", attrColl[i].Value);
Console.WriteLine();
}
// Retrieve a single attribute from the collection; specifically, the
// attribute with the name "misc".
XmlAttribute attr = attrColl["misc"];
// Retrieve the value from that attribute.
String miscValue = attr.InnerXml;
Console.WriteLine("Display the attribute information.");
Console.WriteLine(miscValue);
}
}
Cet exemple affiche la sortie suivante :
Sortie
Affiche tous les attributs de la collection.
genre = novel
ISBN = 1-861001-57-5
misc = sale item
Display the attribute information.
sale item
Les informations d’une collection d’attributs peuvent être récupérées par nom ou numéro d’index. L’exemple ci-dessus montre comment récupérer des données par nom. L’exemple suivant montre comment récupérer des données par numéro d’index.
Étant donné que XmlAttributeCollection est une collection et peut être itérée par nom ou index, cet exemple montre comment sélectionner le premier attribut de la collection à l’aide d’un index de base zéro et à l’aide du fichier suivant, baseuri.xml, comme entrée.
Entrée
<!-- XML fragment -->
<book genre="novel">
<title>Pride And Prejudice</title>
</book>
Option Explicit On
Option Strict On
Imports System.IO
Imports System.Xml
Public Class Sample
Public Shared Sub Main()
' Create the XmlDocument.
Dim doc As New XmlDocument()
doc.Load("http://localhost/baseuri.xml")
' Display information on the attribute node. The value
' returned for BaseURI is 'http://localhost/baseuri.xml'.
Dim attr As XmlAttribute = doc.DocumentElement.Attributes(0)
Console.WriteLine("Name of the attribute: {0}", attr.Name)
Console.WriteLine("Base URI of the attribute: {0}", attr.BaseURI)
Console.WriteLine("The value of the attribute: {0}", attr.InnerText)
End Sub 'Main
End Class 'Sample
using System;
using System.IO;
using System.Xml;
public class Sample
{
public static void Main()
{
// Create the XmlDocument.
XmlDocument doc = new XmlDocument();
doc.Load("http://localhost/baseuri.xml");
// Display information on the attribute node. The value
// returned for BaseURI is 'http://localhost/baseuri.xml'.
XmlAttribute attr = doc.DocumentElement.Attributes[0];
Console.WriteLine("Name of the attribute: {0}", attr.Name);
Console.WriteLine("Base URI of the attribute: {0}", attr.BaseURI);
Console.WriteLine("The value of the attribute: {0}", attr.InnerText);
}
}
Extraction d'un nœud d'attribut individuel
Pour récupérer un nœud d’attribut unique à partir d’un élément, la XmlElement.GetAttributeNode méthode est utilisée. Elle retourne un objet de type XmlAttribute. Une fois que vous disposez d’un XmlAttribute, toutes les méthodes et propriétés disponibles dans la classe sont disponibles sur cet System.Xml.XmlAttribute objet, telles que la recherche de OwnerElement.
Imports System.IO
Imports System.Xml
Public Class Sample
Public Shared Sub Main()
Dim doc As XmlDocument = New XmlDocument()
doc.LoadXml("<book genre='novel' ISBN='1-861001-57-5' misc='sale item'>" & _
"<title>The Handmaid's Tale</title>" & _
"<price>14.95</price>" & _
"</book>")
' Move to an element.
Dim root As XmlElement
root = doc.DocumentElement
' Get an attribute.
Dim attr As XmlAttribute
attr = root.GetAttributeNode("ISBN")
' Display the value of the attribute.
Dim attrValue As String
attrValue = attr.InnerXml
Console.WriteLine(attrValue)
End Sub
End Class
using System;
using System.IO;
using System.Xml;
public class Sample
{
public static void Main()
{
XmlDocument doc = new XmlDocument();
doc.LoadXml("<book genre='novel' ISBN='1-861003-78' misc='sale item'>" +
"<title>The Handmaid's Tale</title>" +
"<price>14.95</price>" +
"</book>");
// Move to an element.
XmlElement root = doc.DocumentElement;
// Get an attribute.
XmlAttribute attr = root.GetAttributeNode("ISBN");
// Display the value of the attribute.
String attrValue = attr.InnerXml;
Console.WriteLine(attrValue);
}
}
Vous pouvez également le faire comme indiqué dans l’exemple précédent, où un nœud d’attribut unique est récupéré à partir de la collection d’attributs. L’exemple de code suivant montre comment écrire une ligne de code pour récupérer un attribut unique par numéro d’index à partir de la racine de l’arborescence de documents XML, également appelée propriété DocumentElement .
XmlAttribute attr = doc.DocumentElement.Attributes[0];