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