Share via


Erstellen neuer Attribute für Elemente im DOM

Das Erstellen neuer Attribute unterscheidet sich vom Erstellen anderer Knotentypen, da Attribute keine Knoten sind. Sie sind Eigenschaften eines Elementknotens und sind in einer XmlAttributeCollection enthalten, die dem Element zugeordnet ist. Es gibt verschiedene Möglichkeiten, ein Attribut zu erstellen und an ein Element anzuhängen:

  • Den Elementknoten abrufen und dann mit SetAttribute der Attributauflistung dieses Elements ein Attribut hinzufügen

  • Mit der CreateAttribute-Methode einen XmlAttribute-Knoten erstellen, den Elementknoten abrufen und dann mit SetAttributeNode den Knoten der Attributauflistung dieses Elements hinzufügen

Im folgenden Beispiel wird veranschaulicht, wie Sie einem Element mit der SetAttribute-Methode ein Attribut hinzufügen:

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);
    }
}

Im folgenden Beispiel wird dargestellt, wie mit der CreateAttribute-Methode ein neues Attribut erstellt wird. Das Attribut wird dann mithilfe der SetAttributeNode-Methode zur Attributsammlung des book-Elements hinzugefügt.

Mit dem folgenden XML-Code

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

Erstellen Sie ein neues Attribut und geben Sie ihm einen Wert:

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

Fügen Sie das Attribut an das Element an:

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

Ausgabe

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

Das vollständige Codebeispiel finden Sie unter CreateAttribute.

Wenn Sie eine aus Attributen bestehende XmlNamedNodeMap erstellt haben, können Sie mithilfe der SetNamedItem-Methode ein Attribut anhand des Namens hinzufügen. Weitere Informationen hierzu finden Sie unter Knotenauflistungen in „NamedNodeMaps“ und „NodeLists“.

Standardattribute

Wenn Sie ein Element erstellen, das gemäß Deklaration ein Standardattribut aufweist, wird durch das Dokumentobjektmodell (DOM) ein neues Standardattribut mit seinem Standardwert erstellt und an das Element angehängt. Gleichzeitig werden die untergeordneten Knoten des Standardattributs erstellt.

Untergeordnete Knoten von Attributen

Die Werte eines Attributknotens werden zu dessen untergeordneten Knoten. Es gibt nur zwei Typen von zulässigen untergeordneten Knoten: XmlText-Knoten und XmlEntityReference-Knoten. Diese sind dahingehend als untergeordnete Knoten zu betrachten, dass sie von Methoden wie FirstChild und LastChild als untergeordnete Knoten verarbeitet werden. Dieses Merkmal eines Attributs mit untergeordneten Knoten ist von Bedeutung, wenn Sie versuchen, Attribute oder untergeordnete Knoten von Attributen zu entfernen. Weitere Informationen hierzu finden Sie unter Entfernen von Attributen aus einem Elementknoten im DOM.

Siehe auch