编写属性

WriteAttributeStringWriteStartAttributeWriteAttributes 方法专门为创建属性而设计。 使用这些方法可以为元素节点编写属性。 编写属性的方法也可以用于为元素创建命名空间声明。 有关更多信息,请参见 在 XmlWriter 中处理命名空间

WriteAttributeString

WriteAttributeString 方法是编写属性最简单的方式。 该方法用于编写整个属性节点,包括字符串值。 下面的代码将属性 (supplierID) 和值 (A23-1) 添加到 XML 元素(Product) 中:

Dim settings As New XmlWriterSettings()
settings.Indent = True
Using writer As XmlWriter = XmlWriter.Create(Console.Out, settings)
    writer.WriteStartElement("Product")
        writer.WriteAttributeString("supplierID", "A23-1")
        writer.WriteElementString("ProductID", "12345")
        writer.WriteEndElement()
End Using
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (XmlWriter writer = XmlWriter.Create(Console.Out, settings))
{
    writer.WriteStartElement("Product");
    writer.WriteAttributeString("supplierID", "A23-1");
    writer.WriteElementString("ProductID", "12345");
    writer.WriteEndElement();
}

前面的代码将以下信息写到控制台中:

<Product supplierID="A23-1">
  <ProductID>12345</ProductID>
</Product>

WriteStartAttribute

WriteStartAttribute 方法是 WriteAttributeString 方法更高级的版本。 它使您可以使用多个方法调用编写属性值。 例如,可以使用 WriteValue 编写类型化值。

通过调用 WriteEndAttribute 方法来关闭该属性。

在以下代码中,hireDate 是保存员工聘用日期的 DateTime 对象。 该代码编写一个 review-date 属性,包含员工 6 个月评估日期的计算值。

Dim hireDate As New DateTime(2008, 5, 20)
Dim settings As New XmlWriterSettings()
settings.Indent = True
Using writer As XmlWriter = XmlWriter.Create(Console.Out, settings)
    writer.WriteStartElement("Employee")
    writer.WriteStartAttribute("review-date")
    writer.WriteValue(hireDate.AddMonths(6))
    writer.WriteEndAttribute()
    writer.WriteElementString("EmployeeID", "12345")
    writer.WriteEndElement()
End Using
DateTime hireDate = new DateTime(2008, 5, 20);
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (XmlWriter writer = XmlWriter.Create(Console.Out, settings))
{
    writer.WriteStartElement("Employee");
    writer.WriteStartAttribute("review-date");
    writer.WriteValue(hireDate.AddMonths(6));
    writer.WriteEndAttribute();
    writer.WriteElementString("EmployeeID", "12345");
    writer.WriteEndElement();
}

前面的代码将以下信息写到控制台中:

<Employee review-date="2008-11-20T00:00:00">
  <EmployeeID>12345</EmployeeID>
</Employee>

WriteAttributes

使用 WriteAttributes 方法可以复制在提供的 XmlReader 对象的当前位置发现的所有属性。 WriteAttributes 行为取决于读取器当前所处的节点类型。

下表介绍对每种节点类型调用 WriteAttributes 的结果。 如果读取器所处的节点类型未在下表中列出,WriteAttributes 没有任何操作。

节点类型

WriteAttributes 行为

Attribute

编写当前属性,然后编写其他属性,直到元素结束标记为止。

Element

编写该元素包含的所有属性。

XML Declaration

编写声明中的所有属性。

例如,在以下代码中,写入器将在读取器当前位置发现的所有属性复制到写入器。

Dim reader As XmlReader = XmlReader.Create("book.xml")
reader.ReadToDescendant("book")
Dim settings As New XmlWriterSettings()
settings.Indent = True
Using writer As XmlWriter = XmlWriter.Create(Console.Out, settings)
    writer.WriteStartElement("root")
    writer.WriteAttributes(reader, True)
    writer.WriteEndElement()
End Using
XmlReader reader = XmlReader.Create("book.xml");
reader.ReadToDescendant("book");
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (XmlWriter writer = XmlWriter.Create(Console.Out, settings))
{

    writer.WriteStartElement("root");
    writer.WriteAttributes(reader, true);
    writer.WriteEndElement();

}

该代码使用此示例 XML 文件 (book.xml):

<?xml version="1.0" ?>
<book genre="autobiography" 
      publicationdate="1981" 
      ISBN="1-861003-11-0">Book Title</book>

前面的代码将以下信息写到控制台中:

<root genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0" />

请参见

其他资源

用 XmlWriter 编写 XML