Partager via


Écriture d'attributs

Les méthodes WriteAttributeString, WriteStartAttribute et WriteAttributes sont spécifiquement conçues pour la création d'attributs. Ces méthodes permettent d'écrire des attributs dans des nœuds d'élément. Les méthodes d'écriture d'attributs permettent aussi de créer des déclarations d'espaces de noms dans un élément. Pour plus d'informations, consultez Gestion de l'espace de noms dans XmlWriter.

WriteAttributeString

La méthode WriteAttributeString est la façon la plus simple d'écrire un attribut. Elle permet d'écrire un nœud d'attribut entier, y compris une valeur de chaîne. Le code suivant ajoute un attribut (supplierID) et une valeur (A23-1) à un élément XML (Product) :

Dim settings As New XmlWriterSettings()
settings.Indent = True
Using writer As XmlWriter = XmlWriter.Create(Console.Out, settings)
    writer.WriteStartElement("Product")
        writer.WriteAttributeString("supplierID", "A23-1")
        writer.WriteElementString("ProductID", "12345")
        writer.WriteEndElement()
End Using
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (XmlWriter writer = XmlWriter.Create(Console.Out, settings))
{
    writer.WriteStartElement("Product");
    writer.WriteAttributeString("supplierID", "A23-1");
    writer.WriteElementString("ProductID", "12345");
    writer.WriteEndElement();
}

Le code précédent écrit ce qui suit dans la console :

<Product supplierID="A23-1">
  <ProductID>12345</ProductID>
</Product>

WriteStartAttribute

La méthode WriteStartAttribute est une version plus avancée de la méthode WriteAttributeString. Elle permet d'écrire la valeur de l'attribut au moyen de divers appels de méthodes. Par exemple, vous pouvez utiliser WriteValue pour écrire une valeur typée.

L'attribut se ferme en appelant la méthode WriteEndAttribute.

Dans le code suivant, hireDate est un objet DateTime qui contient une date d'embauche d'un employé. Le code écrit un attribut review-date, qui contient la valeur calculée de la date de contrôle semestriel de l'employé.

Dim hireDate As New DateTime(2008, 5, 20)
Dim settings As New XmlWriterSettings()
settings.Indent = True
Using writer As XmlWriter = XmlWriter.Create(Console.Out, settings)
    writer.WriteStartElement("Employee")
    writer.WriteStartAttribute("review-date")
    writer.WriteValue(hireDate.AddMonths(6))
    writer.WriteEndAttribute()
    writer.WriteElementString("EmployeeID", "12345")
    writer.WriteEndElement()
End Using
DateTime hireDate = new DateTime(2008, 5, 20);
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (XmlWriter writer = XmlWriter.Create(Console.Out, settings))
{
    writer.WriteStartElement("Employee");
    writer.WriteStartAttribute("review-date");
    writer.WriteValue(hireDate.AddMonths(6));
    writer.WriteEndAttribute();
    writer.WriteElementString("EmployeeID", "12345");
    writer.WriteEndElement();
}

Le code précédent écrit ce qui suit dans la console :

<Employee review-date="2008-11-20T00:00:00">
  <EmployeeID>12345</EmployeeID>
</Employee>

WriteAttributes

La méthode WriteAttributes permet de copier tous les attributs trouvés à la position actuelle de l'objet XmlReader fourni. Le comportement de la méthode WriteAttributes dépend du type de nœud sur lequel le lecteur est actuellement positionné.

Le tableau suivant décrit le résultat de l'appel de la méthode WriteAttributes pour chaque type de nœud. Si le lecteur est positionné sur un type de nœud qui n'est pas répertorié dans le tableau ci-dessous, la méthode WriteAttributes est sans effet.

Type de nœud

Comportement de WriteAttributes

Attribut

Écrit l'attribut actuel, puis le reste des attributs jusqu'à la balise de fermeture de l'élément.

Élément

Écrit tous les attributs contenus dans l'élément.

Déclaration XML

Écrit tous les attributs contenus dans la déclaration.

Par exemple, dans le code suivant, le writer copie tous les attributs trouvés à la position actuelle du lecteur.

Dim reader As XmlReader = XmlReader.Create("book.xml")
reader.ReadToDescendant("book")
Dim settings As New XmlWriterSettings()
settings.Indent = True
Using writer As XmlWriter = XmlWriter.Create(Console.Out, settings)
    writer.WriteStartElement("root")
    writer.WriteAttributes(reader, True)
    writer.WriteEndElement()
End Using
XmlReader reader = XmlReader.Create("book.xml");
reader.ReadToDescendant("book");
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (XmlWriter writer = XmlWriter.Create(Console.Out, settings))
{

    writer.WriteStartElement("root");
    writer.WriteAttributes(reader, true);
    writer.WriteEndElement();

}

Le code utilise ce fichier XML d'exemple (book.xml) :

<?xml version="1.0" ?>
<book genre="autobiography" 
      publicationdate="1981" 
      ISBN="1-861003-11-0">Book Title</book>

Le code précédent écrit ce qui suit dans la console :

<root genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0" />

Voir aussi

Autres ressources

Écriture de XML avec XmlWriter