Lv.的博客

QT QXmlStreamWriter用法小结

 

一 API介绍

writeStartDocument():写文档头,作用类似于创建一个xml文档,并在文档开头部分写入版本信息和编码信息,一般为: <?xml version="1.0" encoding="UTF-8"?>

writer.writeEndDocument():对应于writeStartDocument(),当调用这个函数时,即表示文档信息写入完毕

writeStartElement():写入开始记号,即<>

writeEndElement():写入结束记号,即</>

writeTextElement():写入文本信息记号,如短信的发送人、短信内容、短信时间等

 

二 应用实例

    我们以写入message.xml为例,写入数据后,xml文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<DATA>
    <Sms>
        <Name>wlc</Name>
        <Number>18725658147</Number>
        <Content>短信测试1</Content>
        <Time>2012-07-25 23:54:10</Time>
    </Sms>
    <Sms>
        <Name>rt</Name>
        <Number>13555555555</Number>
        <Content>短信测试2</Content>
        <Time>2012-07-26 00:21:24</Time>
    </Sms>
    <Sms>
        <Name>wzg</Name>
        <Number>18656765434</Number>
        <Content>短信测试3</Content>
        <Time>2012-07-26 00:22:03</Time>
        <Type>0</Type>
        <Read>1</Read>
    </Sms>
</DATA>

    xml写入数据的代码如下,通过阅读实例代码,我们应该很容易理解第一步中介绍的API,以及API的调用顺序。

[cpp] view plaincopy
 
  1. void MsgModel::save_messge()  
  2. {  
  3.     QFile file("message.xml");  
  4.     if(file.open(QIODevice::WriteOnly | QIODevice::Text))  
  5.     {  
  6.         QXmlStreamWriter writer(&file);  
  7.         writer.setAutoFormatting(true);  
  8.         writer.writeStartDocument();  
  9.         writer.writeStartElement("DATA");  
  10.         std::multimap<QString, Message*>::iterator pos;  
  11.         for(pos = message_map->begin();pos != message_map->end();pos++)  
  12.         {  
  13.             Message *message = pos->second;  
  14.             writer.writeStartElement("Sms");  
  15.             writer.writeTextElement("Name", message->GetMsgName());  
  16.             writer.writeTextElement("Number", message->GetMsgPhone());  
  17.             writer.writeTextElement("Content", message->GetMsgContent());  
  18.             writer.writeTextElement("Time", message->GetMsgTime());  
  19.             writer.writeEndElement();  
  20.         }  
  21.         writer.writeEndElement();  
  22.         writer.writeEndDocument();  
  23.         file.close();  
  24.     }  
  25. }  
posted @   Avatarx  阅读(3648)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示