ZetCode

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();

WriteStartElementWriteEndElement 对用于向文档添加新元素。 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 类 - 语言参考

在本文中,我们使用 XmlWriter 编写了 XML 数据。

作者

我的名字是 Jan Bodnar,我是一位充满热情的程序员,拥有丰富的编程经验。 自 2007 年以来,我一直在撰写编程文章。 迄今为止,我已经撰写了超过 1,400 篇文章和 8 本电子书。 我拥有超过十年的编程教学经验。

列出所有 C# 教程