C# XmlWriter
最后修改于 2023 年 7 月 5 日
C# XmlWriter 教程展示了如何在 C# 中使用 XmlWriter 编写 XML 数据。
XmlWriter
XmlWriter 表示一个编写器,它提供了一种快速、非缓存、仅向前的方式来生成具有 XML 的流或文件。
XmlWriter 可以在 System.Xml 命名空间中使用。
C# XmlWriter 示例
以下示例创建了一个简单的 C# XmlWriter。
Program.cs
using System.Xml;
var sts = new XmlWriterSettings()
{
Indent = true,
};
using XmlWriter writer = XmlWriter.Create("data.xml", sts);
writer.WriteStartDocument();
writer.WriteStartElement("value");
writer.WriteValue(6);
writer.WriteEndElement();
writer.WriteEndDocument();
Console.WriteLine("XML document created");
我们创建一个新的 XML 文档。它包含 XML 声明和单个 XML 标签。
var sts = new XmlWriterSettings()
{
Indent = true,
};
using XmlWriter writer = XmlWriter.Create("data.xml", sts);
XmlWriter 使用 Create 方法创建。我们将文档的名称和设置传递给该方法。
writer.WriteStartDocument();
WriteStartDocument 方法启动一个新文档。
writer.WriteStartElement("value");
writer.WriteValue(6);
writer.WriteEndElement();
WriteStartElement 和 WriteEndElement 对用于向文档添加新元素。 WriteValue 写入一个简单的类型化值。
writer.WriteEndDocument();
WriteEndDocument 关闭所有打开的元素或属性,并将编写器恢复到起始状态。
$ dotnet run XML document created $ cat data.xml <?xml version="1.0" encoding="utf-8"?> <value>6</value>
C# XmlWriter 示例 II
以下示例创建一个包含两本书的 XML 文件。
Program.cs
using System.Xml;
var sts = new XmlWriterSettings()
{
Indent = true,
};
using var writer = XmlWriter.Create("books.xml", sts);
writer.WriteStartDocument();
writer.WriteStartElement("bookstore");
writer.WriteStartElement("book");
writer.WriteAttributeString("genre", "Science Fiction");
writer.WriteStartElement("title");
writer.WriteString("Dune");
writer.WriteEndElement();
writer.WriteStartElement("author");
writer.WriteString("Frank Herbert");
writer.WriteEndElement();
writer.WriteStartElement("price");
writer.WriteString("8.99");
writer.WriteEndElement();
writer.WriteEndElement(); // end of book
writer.WriteStartElement("book");
writer.WriteAttributeString("genre", "Novel");
writer.WriteStartElement("title");
writer.WriteString("Old Goriot");
writer.WriteEndElement();
writer.WriteStartElement("author");
writer.WriteString("Honoré de Balzac");
writer.WriteEndElement();
writer.WriteStartElement("price");
writer.WriteString("9.0");
writer.WriteEndElement();
writer.WriteEndElement(); // end of book
writer.WriteEndDocument();
Console.WriteLine("XML document created");
除了 XML 标签,我们还使用 WriteAttributeString 创建属性。
$ dotnet run
XML document created
$ cat books.xml
<?xml version="1.0" encoding="utf-8"?>
<bookstore>
<book genre="Science Fiction">
<title>Dune</title>
<author>Frank Herbert</author>
<price>8.99</price>
</book>
<book genre="Novel">
<title>Old Goriot</title>
<author>Honoré de Balzac</author>
<price>9.0</price>
</book>
</bookstore>
C# XmlWriter 示例 III
下一个示例创建一个包含产品的 XML 文件。
Program.cs
using System.Xml;
var sts = new XmlWriterSettings()
{
Indent = true,
};
using var writer = XmlWriter.Create("products.xml", sts);
var products = new List<Product>
{
new Product(1, "Product A", 12.2M),
new Product(2, "Product B", 11.3M),
new Product(3, "Product C", 9M),
new Product(4, "Product D", 5.6M),
new Product(5, "Product E", 11.7M)
};
writer.WriteStartDocument();
writer.WriteStartElement("products");
foreach (var product in products)
{
writer.WriteStartElement("product");
writer.WriteStartElement("id");
writer.WriteValue(product.id);
writer.WriteEndElement();
writer.WriteStartElement("name");
writer.WriteValue(product.name);
writer.WriteEndElement();
writer.WriteStartElement("price");
writer.WriteValue(product.price);
writer.WriteEndElement();
writer.WriteEndElement(); // end product
}
writer.WriteEndElement();
writer.WriteEndDocument();
Console.WriteLine("XML document created");
record Product(int id, string name, decimal price);
我们有一个使用 C# 记录类型创建的产品列表。 我们遍历该列表并从对象生成 XML 文件。
$ dotnet run
XML document created
$ cat products.xml
<?xml version="1.0" encoding="utf-8"?>
<products>
<product>
<id>1</id>
<name>Product A</name>
<price>12.2</price>
</product>
<product>
<id>2</id>
<name>Product B</name>
<price>11.3</price>
</product>
<product>
<id>3</id>
<name>Product C</name>
<price>9</price>
</product>
<product>
<id>4</id>
<name>Product D</name>
<price>5.6</price>
</product>
<product>
<id>5</id>
<name>Product E</name>
<price>11.7</price>
</product>
</products>
来源
在本文中,我们使用 XmlWriter 编写了 XML 数据。
作者
列出所有 C# 教程。