Поделиться через


Создание новых атрибутов для элементов в DOM

Создание новых атрибутов отличается от создания других типов узлов, так как атрибуты не являются узлами. Они являются свойствами узла элемента и содержатся в xmlAttributeCollection , связанном с элементом. Есть несколько способов создания атрибута и присоединения его к элементу:

  • Получите узел элемента и примените метод SetAttribute, чтобы добавить атрибут в коллекцию атрибутов этого элемента.

  • Создайте узел XmlAttribute с помощью метода CreateAttribute, получите узел элемента и примените метод SetAttributeNode, чтобы добавить узел в коллекцию атрибутов этого элемента.

Следующий пример демонстрирует, как добавить атрибут к элементу с помощью метода 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);
    }
}

В следующем примере показано, как создать новый атрибут с помощью метода CreateAttribute . Затем атрибут добавляется в коллекцию атрибутов элемента книги с помощью метода SetAttributeNode .

Заданы следующие XML-данные:

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

Создайте новый атрибут и присвойте ему значение:

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

Присоединение атрибута к элементу:

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

Выходные данные

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

Полный код для этого примера вы найдете на странице CreateAttribute.

Если вы создали для атрибутов коллекцию XmlNamedNodeMap, можете добавить именованный атрибут с помощью метода SetNamedItem. Дополнительные сведения см. в статье Коллекции узлов в NamedNodeMap и NodeList.

Атрибуты по умолчанию

При создании элемента, для которого декларирован атрибут по умолчанию, модель XML DOM создаст новый атрибут по умолчанию со значением по умолчанию и присоединит его к элементу. Одновременно будут созданы дочерние узлы атрибута по умолчанию.

Дочерние узлы атрибута

Значение узла атрибута становится его дочерними узлами. Существует только два типа допустимых дочерних узлов: узлы XmlText и узлы XmlEntityReference . Они являются дочерними узлами в том смысле, что такие методы, как FirstChild и LastChild, обрабатывают их как дочерние узлы. Это отличие атрибута, имеющего дочерние узлы, становится важным во время удаления атрибута или его дочерних узлов. Дополнительные сведения см. в статье Удаление атрибутов из узла элемента в модели DOM.

См. также