为 DOM 中的元素创建新特性
创建新特性与创建其他节点类型不同,因为特性不是节点。 它们是元素节点的属性,包含在与元素关联的 XmlAttributeCollection 中。 有多种方法可创建属性并将其附加到元素:
获取元素节点,并使用 SetAttribute 将属性添加到相应元素的属性集合。
使用 CreateAttribute 方法创建 XmlAttribute 节点,获取元素节点,再使用 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 方法将特性添加到 book 元素的特性集合。
已知下列 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 方法按名称添加属性。 有关详细信息,请参阅 NamedNodeMaps 和 NodeLists 中的节点集合。
默认属性
如果创建一个声明为具有默认属性的元素,则 XML 文档对象模型 (DOM) 创建一个带默认值的新默认属性并将其附加到该元素。 此时还创建默认属性的子节点。
属性子节点
属性节点的值成为它的子节点。 有效子节点只有两种类型:XmlText 节点和 XmlEntityReference 节点。 这些之所以是子节点是因为,FirstChild 和 LastChild 等方法按子节点处理它们。 当试图移除属性或属性子节点时,属性这种具有子节点的特性很重要。 有关详细信息,请参阅删除 DOM 中元素节点的属性。