Qt怎么处理XML文件 Qt QXmlStreamReader/Writer使用方法

admin 百科 14
推荐使用QXmlStreamReader和QXmlStreamWriter处理XML:前者基于事件流、内存友好,适合大文件解析;后者按需生成、自动转义缩进,写入简洁安全。

Qt怎么处理XML文件 Qt QXmlStreamReader/Writer使用方法-第1张图片-佛山资讯网

Qt 处理 XML 文件推荐用 QXmlStreamReader(读)和 QXmlStreamWriter(写),它们是基于事件流的轻量级、高效、内存友好的方案,比 DOM(QDomDocument)更适合大文件或性能敏感场景。

QXmlStreamReader:边读边解析,不加载整个文档

适合解析结构清晰、顺序固定的 XML,比如配置文件、日志、简单数据交换格式。它逐个读取“令牌”(token),如开始标签、文本内容、结束标签等,你需要自己维护上下文状态。

  • 创建后调用 readNext() 推进到下一个元素,再用 tokenType() 判断类型(StartElementCharactersEndElement 等)
  • 遇到 StartElement 可用 name() 获取标签名,attributes() 拿属性列表
  • 遇到 Characters 时用 text().toString() 提取文本内容(注意可能含空白或换行,建议用 isWhitespace() 过滤)
  • 支持嵌套层级判断:用 depth() 或手动计数(如进入 <item></item> 时 ++,退出时 --)

QXmlStreamWriter:按需生成格式化 XML

写 XML 更简单直观——你控制输出顺序,它负责转义、缩进和语法正确性。

  • 构造时传入 QTextStream(可绑定 QFile 或 QByteArray),自动处理编码(默认 UTF-8)
  • 常用方法:writeStartDocument()writeStartElement("tag")writeAttribute("key", "value")writeCharacters("text")writeEndElement()writeEndDocument()
  • 启用自动缩进:调用 setAutoFormatting(true),再设 setAutoFormattingIndent(2)
  • 中文等 Unicode 内容无需额外处理,只要 QTextStream 编码设置正确(通常默认 OK)

实用小技巧与避坑点

实际用的时候容易卡在几个细节上:

标签: 编码 stream 配置文件

发布评论 0条评论)

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