Compartilhar via


Criar atributos para elementos no DOM

Criar novos atributos é diferente de criar outros tipos de nó, pois os atributos não são nós. Eles são propriedades de um nó de elemento e estão contidos em um XmlAttributeCollection associado ao elemento. Há várias maneiras de criar um atributo e anexá-lo a um elemento:

  • Obter o nó de elemento e usar SetAttribute para adicionar um atributo à coleção de atributos do elemento.

  • Criar um nó XmlAttribute usando o método CreateAttribute, obter o nó do elemento e usar SetAttributeNode para adicionar o nó à coleção de atributos desse elemento.

O seguinte exemplo mostra como adicionar um atributo a um elemento usando o 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);
    }
}

O exemplo a seguir mostra como criar um novo atributo usando o método CreateAttribute. O atributo então é adicionado à coleção de atributos do elemento book usando o método SetAttributeNode.

Com o seguinte XML:

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

Crie um atributo e atribua um valor a ele:

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

Anexe o atributo ao elemento:

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

Saída

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

O exemplo de código completo pode ser encontrado em CreateAttribute.

Se você criou um XmlNamedNodeMap de atributos, poderá adicionar um atributo pelo nome usando o método SetNamedItem. Para saber mais, confira Coleções de nó em NamedNodeMaps e em NodeLists.

Atributos padrão

Se você criar um elemento que está declarado para ter um atributo padrão, um novo atributo padrão com seu valor padrão será criado pelo DOM (Document Object Model) XML e anexado ao elemento. Os nós filhos do atributo padrão também são criados neste momento.

Nós filho do atributo

O valor de um nó de atributo se torna os seus nós filhos. Há apenas dois tipos de nós filho válidos: nós XmlText e nós XmlEntityReference. Esses são nós filhos no sentido de que métodos como FirstChild e LastChild os processam como nós filhos. Essa distinção de um atributo que possui nós filhos é importante ao tentar remover atributos ou nós filhos do atributo. Para saber mais, confira Removendo atributos de um nó de elemento no DOM.

Confira também