QT QXmlStreamWriter用法小结

时间:2020-12-03 07:07:39

一 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的调用顺序。

  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. }