为 DOM 中的元素创建新属性

创建新属性不同于创建其他节点类型,因为属性不是节点,而是元素节点的属性并包含在与元素关联的 XmlAttributeCollection 中。 有多种方法可创建属性并将其附加到元素:

  • 获取元素节点并使用 SetAttribute 将属性添加到该元素的属性集合。

  • 使用 CreateAttribute 方法创建 XmlAttribute 节点,获取元素节点,然后使用 SetAttributeNode 将节点添加到该元素的属性集合。

下面的示例显示如何使用 SetAttribute 方法将属性添加到元素。

Imports System
Imports System.IO
Imports System.Xml

public class Sample

  public shared sub Main()

  Dim doc as XmlDocument = 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()
  {
    XmlDocument 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>

完整代码示例位于 XmlDocument.CreateAttribute 方法

还可以创建一个 XmlAttribute 节点并使用 InsertBeforeInsertAfter 方法将其放在集合中的适当位置。 如果该属性集合中已存在一个同名属性,则从该集合中移除现有的 XmlAttribute 节点并插入新的 XmlAttribute 节点。 这与 SetAttribute 方法执行的方式相同。 这些方法(作为参数)将现有节点作为执行 InsertBeforeInsertAfter 的参考点。 如果不提供指示插入新节点位置的参考节点,则 InsertAfter 方法的默认设置是在集合的开头插入新节点。 如果未提供任何参考节点,则 InsertBefore 的默认位置是集合的末尾。

如果创建了属性的 XmlNamedNodeMap,则可以使用 SetNamedItem 方法按名称添加属性。 有关更多信息,请参见 NamedNodeMap 和 NodeList 中的节点集合

默认属性

如果创建一个声明为具有默认属性的元素,则 XML 文档对象模型 (DOM) 创建一个带默认值的新默认属性并将其附加到该元素。 此时还创建默认属性的子节点。

属性子节点

属性节点的值成为它的子节点。 有效子节点只有两种类型:XmlText 节点和 XmlEntityReference 节点。 从 FirstChildLastChild 等方法将这些节点按子节点来处理这一点上说,它们是子节点。 当试图移除属性或属性子节点时,属性这种具有子节点的特性很重要。 有关更多信息,请参见移除 DOM 中元素节点的属性

请参见

概念

XML 文档对象模型 (DOM)