Creazione di nuovi attributi per gli elementi nel DOMCreating New Attributes for Elements in the DOM

La creazione di nuovi attributi è diversa dalla creazione di altri tipi di nodi, perché gli attributi non sono nodi, ma proprietà di un nodo di elemento e sono contenuti in una classe XmlAttributeCollection associata all'elemento.Creating new attributes is different than creating other node types, because attributes are not nodes, but are properties of an element node and are contained in an XmlAttributeCollection associated with the element. Sono disponibili diversi modi per creare un attributo e associarlo a un elemento:There are multiple ways to create an attribute and attach it to an element:

  • Ottenere il nodo dell'elemento e usare SetAttribute per aggiungere un attributo alla raccolta di attributi di tale elemento.Get the element node and use SetAttribute to add an attribute to the attribute collection of that element.

  • 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.Create an XmlAttribute node using the CreateAttribute method, get the element node, then use SetAttributeNode to add the node to the attribute collection of that element.

Nell'esempio seguente viene illustrato come aggiungere un attributo a un elemento usando il metodo SetAttribute.The following example shows how to add an attribute to an element using the SetAttribute method.

Imports System  
Imports System.IO  
Imports System.Xml  

public class Sample  

  public shared sub Main()  

  Dim doc as XmlDocument = 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()  
  {  
    XmlDocument 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);  
  }  

Nell'esempio seguente viene illustrata la creazione di un nuovo attributo con il metodo CreateAttribute.The following example shows a new attribute being created using the CreateAttribute method. L'attributo viene quindi aggiunto alla raccolta di attributi dell'elemento book con il metodo SetAttributeNode.It then shows the attribute added to the attribute collection of the book element using the SetAttributeNode method.

Dato l'XML seguente:Given the following XML:

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

Creare un nuovo attributo e assegnargli un valore:create a new attribute and give it a value:

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

Quindi associarlo all'elemento:and attach it to the element:

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

OutputOutput

<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.The full code sample can be found at CreateAttribute.

È anche possibile creare un nodo XmlAttribute e usare i metodi InsertBefore o InsertAfter per inserirlo nella posizione appropriata nella raccolta.You can also create an XmlAttribute node and use the InsertBefore or InsertAfter methods to place it in the appropriate position in the collection. Se è già presente un attributo con lo stesso nome nella raccolta di attributi, il nodo XmlAttribute esistente viene rimosso dalla raccolta e il nuovo nodo XmlAttribute viene inserito.If an attribute with the same name is already present in the attribute collection, the existing XmlAttribute node is removed from the collection and the new XmlAttribute node is inserted. Questa operazione viene eseguita come nel metodo SetAttribute.This performs the same way as the SetAttribute method. Questi metodi accettano come parametro un nodo esistente come punto di riferimento per eseguire InsertBefore e InsertAfter.These methods take, as a parameter, an existing node as a reference point to do the InsertBefore and InsertAfter. Se non viene fornito un nodo di riferimento che indica dove inserire il nuovo nodo, per impostazione predefinita il metodo InsertAfter inserirà il nuovo nodo all'inizio della raccolta.If you do not provide a reference node indicating where to insert the new node, the default for the InsertAfter method is to insert the new node at the beginning of the collection. Se non viene fornito alcun nodo di riferimento, la posizione predefinita di InsertBefore è alla fine della raccolta.The default position for the InsertBefore, if no reference node is provided, is at the end of the collection.

Se si è creata una classe XmlNamedNodeMap di attributi, sarà possibile aggiungere un attributo in base al nome usando SetNamedItem.If you created an XmlNamedNodeMap of attributes, you can add an attribute by name using the SetNamedItem. Per altre informazioni, vedere Raccolte di nodi in NamedNodeMaps e NodeLists.For more information, see Node Collections in NamedNodeMaps and NodeLists.

Attributi predefinitiDefault Attributes

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.If you create an element that is declared to have a default attribute, then a new default attribute with its default value is created by the XML Document Object Model (DOM) and attached to the element. Contemporaneamente verranno creati anche i nodi figlio dell'attributo predefinito.The child nodes of the default attribute are also created at this time.

Nodi figlio degli attributiAttribute Child Nodes

Il valore del nodo di un attributo diviene i nodi figlio dell'attributo stesso.The value of an attribute node becomes its child nodes. Esistono solo due tipi di nodi figlio validi: i nodi XmlText e i nodi XmlEntityReference.There are only two types of valid child nodes: XmlText nodes, and XmlEntityReference nodes. Si tratta di nodi figlio perché vengono elaborati come tali da metodi come FirstChild e LastChild.These are child nodes in the sense that methods such as FirstChild and LastChild process them as child nodes. Questa distinzione di un attributo con nodi figlio è importante quando si tenta di rimuovere attributi o nodi figlio degli attributi.This distinction of an attribute having child nodes is important when trying to remove attributes or attribute child nodes. Per altre informazioni, vedere Rimozione di attributi da un nodo di elemento nel DOM.For more information, see Removing Attributes from an Element Node in the DOM.

Vedere ancheSee Also

Modello DOM (Document Object Mode) XMLXML Document Object Model (DOM)