XmlReader 和 XmlWriter 是 .NET 中轻量、高性能的流式 XML 处理类,基于“拉”和“推”模型,支持只读前向遍历与顺序写入,适用于大文件处理;二者可配合实现边读边写的流式转换。

XmlReader 和 XmlWriter 是 .NET 中轻量、高性能的流式 XML 处理类,不加载整个文档到内存,适合处理大文件或对性能敏感的场景。它们基于“推”(Writer)和“拉”(Reader)模型,操作的是 XML 节点流,而非 DOM 树。
XmlReader 是只进、只读的游标式读取器,逐个读取节点(如 StartElement、Text、EndElement),不能回退或随机访问。
示例:读取
using var reader = XmlReader.Create("books.xml");
while (reader.Read()) {
if (reader.NodeType == XmlNodeType.Element && reader.Name == "book") {
string id = reader.GetAttribute("id"); // "1"
}
else if (reader.NodeType == XmlNodeType.Element && reader.Name == "title") {
reader.Read(); // 移动到 Text 节点
string title = reader.Value; // "C#入门"
}
}XmlWriter 是顺序写入器,按 XML 规则生成节点流,会自动处理缩进、转义、命名空间和格式合法性(如匹配起始/结束标签)。
示例:生成一个简单 book 元素
using var writer = XmlWriter.Create("output.xml",
new XmlWriterSettings { Indent = true, Encoding = Encoding.UTF8 });
writer.WriteStartDocument();
writer.WriteStartElement("book");
writer.WriteAttributeString("id", "1");
writer.WriteElementString("title", "C#入门");
writer.WriteEndElement();
writer.WriteEndDocument(); // 自动补全并关闭典型场景是“流式转换”——不落地加载,直接读一段、加工一段、写一段,内存占用恒定。
关键逻辑片段:
using var reader = XmlReader.Create("in.xml");
using var writer = XmlWriter.Create("out.xml", new XmlWriterSettings { Indent = true });
<p>while (reader.Read()) {
switch (reader.NodeType) {
case XmlNodeType.Element:
writer.WriteStartElement(reader.Name);
// 复制所有属性
for (int i = 0; i < reader.AttributeCount; i++) {
reader.MoveToAttribute(i);
writer.WriteAttributeString(reader.Name, reader.Value);
}
reader.MoveToElement(); // 回到元素节点
break;
case XmlNodeType.Text:
if (reader.ParentNode?.Name == "price") {
decimal price = decimal.Parse(reader.Value) * 1.1m;
writer.WriteString(price.ToString());
} else {
writer.WriteString(reader.Value);
}
break;
case XmlNodeType.EndElement:
writer.WriteEndElement();
break;
// 其他节点类型(注释、PI等)可选择性复制
}
}基本上就这些。流式读写不复杂但容易忽略节点状态和生命周期管理,把握住“单次前向”和“严格嵌套”两个核心,就能稳定高效地处理任意大小的 XML 数据。
以上就是C#的XmlReader和XmlWriter怎么实现流式读写的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号