Creare nuovi attributi per gli elementi nel DOM

La creazione di nuovi attributi è diversa dalla creazione di altri tipi di nodo, perché gli attributi non sono nodi. Sono proprietà di un nodo elemento e sono contenute in un oggetto XmlAttributeCollection associato all'elemento. Sono disponibili diversi modi per creare un attributo e associarlo a un elemento:

  • Ottenere il nodo dell'elemento e usare SetAttribute per aggiungere un attributo alla raccolta di attributi di tale elemento.

  • Creare un nodo XmlAttribute usando il metodo CreateAttribute, ottenere il nodo dell'elemento, quindi usare SetAttributeNode per aggiungere il nodo alla raccolta di attributi di tale elemento.

Nell'esempio seguente viene illustrato come aggiungere un attributo a un elemento usando il metodo 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'esempio seguente mostra come creare un nuovo attributo con il metodo CreateAttribute. L'attributo viene quindi aggiunto alla raccolta di attributi dell'elemento book con il metodo SetAttributeNode.

Dato l'XML seguente:

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

Creare un nuovo attributo e assegnargli un valore:

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

Associare l'attributo all'elemento:

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

Output

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

L'esempio di codice completo è disponibile in CreateAttribute.

Se si è creata una classe XmlNamedNodeMap di attributi, sarà possibile aggiungere un attributo in base al nome usando il metodo SetNamedItem. Per altre informazioni, vedere Raccolte di nodi in NamedNodeMaps e NodeLists.

Attributi predefiniti

Se si crea un elemento in cui è dichiarato un attributo predefinito, nel DOM (Document Object Model) XML verrà creato e associato all'elemento un nuovo attributo predefinito con il relativo valore. Contemporaneamente verranno creati anche i nodi figlio dell'attributo predefinito.

Nodi figlio degli attributi

Il valore del nodo di un attributo diviene i nodi figlio dell'attributo stesso. Esistono solo due tipi di nodi figlio validi: i nodi XmlText e i nodi XmlEntityReference. Si tratta di nodi figlio perché vengono elaborati come tali da metodi come FirstChild e LastChild. Questa distinzione di un attributo con nodi figlio è importante quando si tenta di rimuovere attributi o nodi figlio degli attributi. Per altre informazioni, vedere Rimozione di attributi da un nodo di elemento nel DOM.

Vedi anche