Создание новых атрибутов для элементов в 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.