C#的XmlReader和XmlWriter怎么实现流式读写

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

C#的XmlReader和XmlWriter怎么实现流式读写-第1张图片-佛山资讯网

XmlReaderXmlWriter 是 .NET 中轻量、高性能的流式 XML 处理类,不加载整个文档到内存,适合处理大文件或对性能敏感的场景。它们基于“推”(Writer)和“拉”(Reader)模型,操作的是 XML 节点流,而非 DOM 树。

XmlReader:只读、前向、单次遍历

XmlReader 是只进、只读的游标式读取器,逐个读取节点(如 StartElement、Text、EndElement),不能回退或随机访问。

  • XmlReader.Create() 创建实例,支持从 Stream、TextReader、Uri 或字符串输入
  • 调用 Read() 移动到下一个节点,返回 bool 表示是否还有节点
  • 通过 NodeType 判断当前节点类型(Element、Text、EndElement 等)
  • NameValueGetAttribute() 获取内容和属性

示例:读取 C#入门

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:只写、顺序生成、自动格式校验

XmlWriter 是顺序写入器,按 XML 规则生成节点流,会自动处理缩进、转义、命名空间和格式合法性(如匹配起始/结束标签)。

  • XmlWriter.Create() 创建,可传入 StreamWriter、Stream 或 StringBuilder
  • WriteStartElement() / WriteEndElement() 写元素;WriteValue() 写文本内容
  • WriteAttributeString() 写属性;WriteComment()WriteProcessingInstruction() 写注释和 PI
  • 必须显式调用 Flush()Close() 确保内容写出

示例:生成一个简单 book 元素

标签: node switch stream c# 内存占用 .net

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~