Udostępnij za pośrednictwem


Tworzenie nowych atrybutów dla elementów w modelu DOM

Tworzenie nowych atrybutów różni się od tworzenia innych typów węzłów, ponieważ atrybuty nie są węzłami. Są to właściwości węzła elementu i są zawarte w obiekcie XmlAttributeCollection skojarzonym z elementem. Istnieje wiele sposobów tworzenia atrybutu i dołączania go do elementu:

  • Pobierz węzeł elementu i użyj polecenia SetAttribute , aby dodać atrybut do kolekcji atrybutów tego elementu.

  • Utwórz węzeł XmlAttribute przy użyciu metody CreateAttribute, pobierz węzeł elementu, a następnie użyj polecenia SetAttributeNode, aby dodać węzeł do kolekcji atrybutów tego elementu.

W poniższym przykładzie pokazano, jak dodać atrybut do elementu przy użyciu metody 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);
    }
}

W poniższym przykładzie pokazano, jak utworzyć nowy atrybut przy użyciu metody CreateAttribute . Atrybut jest następnie dodawany do kolekcji atrybutów elementu książki przy użyciu metody SetAttributeNode .

Biorąc pod uwagę następujący kod XML:

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

Utwórz nowy atrybut i nadaj mu wartość:

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

Dołącz atrybut do elementu:

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

Wyjście

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

Pełny przykład kodu można znaleźć na stronie CreateAttribute.

Jeśli utworzono element XmlNamedNodeMap atrybutów, możesz dodać atrybut przy użyciu SetNamedItem metody . Aby uzyskać więcej informacji, zobacz Kolekcje węzłów w nazwanych węzłach Mapy i NodeLists.

Atrybuty domyślne

Jeśli utworzysz element zadeklarowany jako domyślny atrybut, zostanie utworzony nowy atrybut domyślny z jego wartością domyślną przez model DOM (XML Document Object Model) i dołączony do elementu. Węzły podrzędne atrybutu domyślnego są również tworzone w tej chwili.

Węzły podrzędne atrybutu

Wartość węzła atrybutu staje się jego węzłami podrzędnymi. Istnieją tylko dwa typy prawidłowych węzłów podrzędnych: węzły XmlText i węzły XmlEntityReference . Są to węzły podrzędne w tym sensie, że metody takie jak FirstChild i LastChild przetwarzają je jako węzły podrzędne. To rozróżnienie atrybutu o węzłach podrzędnych jest ważne podczas próby usunięcia atrybutów lub atrybutów węzłów podrzędnych. Aby uzyskać więcej informacji, zobacz Usuwanie atrybutów z węzła elementu w modelu DOM.

Zobacz też