C# XmlWriter 读写xml

这是我参与11月更文挑战的第5天,活动详情查看:2021最后一次更文挑战

之前介绍了使用 XmlDocument读写xml的操作,接着XmlDocument获取XML 使用XmlWriter 将xml写入后获取文本,我们再来看一看XmlWriter 如何读写XML。

XmlWriter 类

表示一个写入器,该写入器提供一种快速、非缓存和只进方式以生成包含 XML 数据的流或文件。
使用XmlWriter可以:

  • 检查字符是不是合法的 XML 字符,元素和属性的名称是不是有效的 XML 名称。
  • 检查 XML 文档的格式是否正确。
  • 将二进制字节编码为 Base64 或 BinHex,并写出结果文本。
  • 使用公共语言运行时类型而不是字符串传递值,以避免必须手动执行值转换。
  • 将多个文档写入一个输出流。
  • 写出有效的名称、限定名和名称标记。

XmlWriter 示例

我们还是以上一篇的xml结构文档为例演示如何写xml文档。

1
2
3
4
5
6
7
8
9
10
11
12
xml复制代码<?xml version="1.0"?>
<books>
<book>
<author>Carson</author>
<price format="dollar">31.95</price>
<pubdate>05/01/2001</pubdate>
</book>
<pubinfo>
<publisher>MSPress</publisher>
<state>WA</state>
</pubinfo>
</books>

首先创建XmlWriter对象,由于XmlWriter是数据流,所以我们还要关闭XmlWriter数据流。

创建对象需要我们使用XmlWriterSettings来进行设置,可以设置xml的编码格式,默认是utf-16,我们设置utf-8。然后设置换行符号,使用MemoryStream来存储写入的数据, XmlWriter.Create(ms, settings)创建。
WriteStartElement 方法写节点开始。

WriteEndElement 写节点结束。

WriteElementString 写入整个元素节点,包括字符串值。

WriteAttributeString 写入整个属性节点,包括字符串值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
ini复制代码XmlWriter xmlWriter = null;

XmlWriterSettings settings = new XmlWriterSettings();
//要求缩进
settings.Indent = true;
//设置encoding utf-8,默认将输出utf-16
settings.Encoding = new UTF8Encoding(false);
//设置换行符
settings.NewLineChars = Environment.NewLine;

MemoryStream ms = new MemoryStream();
try
{
xmlWriter = XmlWriter.Create(ms, settings);
xmlWriter.WriteStartDocument();
//books 开始
xmlWriter.WriteStartElement("books");

//book 开始
xmlWriter.WriteStartElement("book");
xmlWriter.WriteElementString("author","Carson");
xmlWriter.WriteElementString("price", "19.95");
writer.WriteAttributeString("format", "dollar");
xmlWriter.WriteElementString("pubdate", "05/01/2001");
//book 结束
xmlWriter.WriteEndElement();

//pubinfo 开始
xmlWriter.WriteStartElement("pubinfo");
xmlWriter.WriteElementString("publisher","MSPress");
xmlWriter.WriteElementString("state","WA");
//pubinfo 结束
xmlWriter.WriteEndElement();

//books 结束
xmlWriter.WriteEndElement();
}
finally
{
if (xmlWriter != null)
xmlWriter.Close();
ms.Close();
}
string xmlStr=Encoding.UTF8.GetString(ms.ToArray());

通过XmlWriter的展示我们就写入了xml文档并且可以直接获取xml文本使用。还有些添加注释,命名空间等等方法都是类似的。

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%