Créer de nouveaux attributs pour des éléments du DOM

La création d’attributs diffère de la création d’autres types de nœuds, car les attributs ne sont pas des nœuds. Ils sont des propriétés d’un nœud d’élément et sont contenus dans une XmlAttributeCollection associée à l’élément. Il existe plusieurs manières de créer un attribut et de le joindre à un élément :

  • Obtenir le nœud d’élément et utiliser SetAttribute pour ajouter un attribut à la collection d’attributs de cet élément

  • Créer un nœud XmlAttribute à l’aide de la méthode CreateAttribute, obtenir le nœud d’élément, puis utiliser SetAttributeNode pour ajouter le nœud à la collection d’attributs de cet élément

L’exemple suivant montre comment ajouter un attribut à un élément au moyen de la méthode SetAttribute :

Imports System.IO
Imports System.Xml

Public Class Sample

    Public Shared Sub Main()

        Dim doc As New XmlDocument()
        doc.LoadXml("<book xmlns:bk='urn:samples' bk:ISBN='1-861001-57-5'>" & _
                    "<title>Pride And Prejudice</title>" & _
                    "</book>")
        Dim root As XmlElement = doc.DocumentElement

        ' Add a new attribute.
        root.SetAttribute("genre", "urn:samples", "novel")

        Console.WriteLine("Display the modified XML...")
        Console.WriteLine(doc.InnerXml)
    End Sub
End Class
using System;
using System.IO;
using System.Xml;

public class Sample
{
    public static void Main()
    {
        var doc = new XmlDocument();
        doc.LoadXml("<book xmlns:bk='urn:samples' bk:ISBN='1-861001-57-5'>" +
                    "<title>Pride And Prejudice</title>" +
                    "</book>");
        XmlElement root = doc.DocumentElement;

        // Add a new attribute.
        root.SetAttribute("genre", "urn:samples", "novel");

        Console.WriteLine("Display the modified XML...");
        Console.WriteLine(doc.InnerXml);
    }
}

L’exemple suivant montre comment créer un nouvel attribut au moyen de la méthode CreateAttribute. L’attribut est ensuite ajouté à la collection d’attributs de l’élément book à l’aide de la méthode SetAttributeNode.

En partant du code XML suivant :

<book genre='novel' ISBN='1-861001-57-5'>
<title>Pride And Prejudice</title>
</book>

Créez un nouvel attribut et attribuez-lui une valeur :

Dim attr As XmlAttribute = doc.CreateAttribute("publisher")
attr.Value = "WorldWide Publishing"
XmlAttribute attr = doc.CreateAttribute("publisher");
attr.Value = "WorldWide Publishing";

Attachez l’attribut à l’élément :

doc.DocumentElement.SetAttributeNode(attr)
doc.DocumentElement.SetAttributeNode(attr);

Sortie

<book genre="novel" ISBN="1-861001-57-5" publisher="WorldWide Publishing">
<title>Pride And Prejudice</title>
</book>

Pour obtenir l’exemple de code complet, consultez CreateAttribute.

Si vous avez créé un XmlNamedNodeMap d’attributs, vous pouvez ajouter un attribut en vous servant de son nom à l’aide de la méthode SetNamedItem. Pour plus d’informations, consultez Collections de nœuds dans NamedNodeMap et NodeList.

Attributs par défaut

Si vous créez un élément déclaré comme possédant un attribut par défaut, un nouvel attribut par défaut avec sa valeur par défaut est créé par le DOM (Document Object Model) XML et joint à cet élément. Les nœuds enfants de l'attribut par défaut sont également créés en même temps.

Nœuds enfants d’attribut

La valeur d'un nœud d'attribut devient ses nœuds enfants. Il n’y a que deux types de nœuds enfants valides : les nœuds XmlText et les nœuds XmlEntityReference. Ces nœuds sont des nœuds enfants, en ce sens que des méthodes telles que FirstChild et LastChild les traitent comme tels. Cette distinction qui caractérise un attribut possédant des nœuds enfants est importante lorsque vous tentez de supprimer des attributs ou des nœuds enfants d'attribut. Pour plus d'informations, consultez Suppression d'attributs d'un nœud d'élément dans le DOM.

Voir aussi