WriteAttributeString、WriteStartAttribute 和 WriteAttributes 方法专门为创建属性而设计。 使用这些方法可以为元素节点编写属性。 编写属性的方法也可以用于为元素创建命名空间声明。 有关更多信息,请参见 在 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" />