Creación de nuevos atributos para elementos en DOM

La creación de nuevos atributos es distinta de la creación de otros tipos de nodos, ya que los atributos no son nodos. Son propiedades del nodo de un elemento y están en un XmlAttributeCollection asociado con el elemento. Hay varias formas de crear un atributo y adjuntarlo a un elemento:

  • Para agregar un atributo a la colección de atributos de dicho elemento, obtenga el nodo de elemento y utilice SetAttribute.

  • Cree un nodo XmlAttribute mediante el método CreateAttribute, obtenga el nodo del elemento y, a continuación, utilice el método SetAttributeNode para agregar el nodo a la colección de atributos de dicho elemento.

En el ejemplo siguiente se muestra cómo agregar un atributo a un elemento mediante el método 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);
    }
}

En el ejemplo siguiente se muestra un nuevo atributo que se crea mediante el método CreateAttribute. Después, se agrega el atributo a la colección de atributos del elemento book mediante el método SetAttributeNode.

Dado el siguiente XML:

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

Cree un atributo nuevo y asígnele un valor:

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

Adjunte el atributo al elemento:

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

Salida

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

El ejemplo de código completo se puede encontrar en CreateAttribute.

Si creó una clase XmlNamedNodeMap de atributos, puede agregar un atributo por nombre mediante el método SetNamedItem. Para obtener más información, vea Colecciones de nodos en NamedNodeMaps y NodeLists.

Atributos predeterminados

Si creó un elemento declarado para tener un atributo predeterminado, el Modelo de objetos de documento (DOM) crea un nuevo atributo predeterminado con su valor predeterminado y lo adjunta al elemento. Los nodos secundarios del atributo predeterminado se crean también en este momento.

Nodos secundarios de atributo

El valor de un nodo de atributo se convierte en sus nodos secundarios. Sólo hay dos tipos válidos de nodos secundarios: Nodos XmlText y nodos XmlEntityReference. Se trata de nodos secundarios en el sentido de que métodos como FirstChild y LastChild los procesan como tales. Esta distinción de un atributo con nodos secundarios es importante cuando se intenta quitar atributos o nodos secundarios de atributo. Para obtener más información, vea Cómo quitar atributos de un nodo de elemento en DOM.

Vea también