QXmlStreamWriter用法

本文详细介绍了QT库中的QXmlStreamWriter类,用于XML文件的写入操作。通过API讲解和实例代码展示了如何使用writeStartDocument()、writeEndElement()、writeStartElement()和writeTextElement()等方法,以短信数据为例,创建了一个XML文件的完整过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文链接:https://blog.youkuaiyun.com/wang_lichun/article/details/7816077 (备注转载地址)

在前一篇博客《QT QXmlStreamReader用法小结》中,我们介绍了QXmlStreamReader的基本用法。QXmlStreamReader主要用于xml文件的读取,这一篇则介绍QT下xml文件存储类QXmlStreamWriter。先简单介绍API,然后给出应用实例(仍然以短信为例)。

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

void MsgModel::save_messge()
{
    QFile file("message.xml");
    if(file.open(QIODevice::WriteOnly | QIODevice::Text))
    {
        QXmlStreamWriter writer(&file);
        writer.setAutoFormatting(true);
        writer.writeStartDocument();
        writer.writeStartElement("DATA");
        std::multimap<QString, Message*>::iterator pos;
        for(pos = message_map->begin();pos != message_map->end();pos++)
        {
            Message *message = pos->second;
            writer.writeStartElement("Sms");
            writer.writeTextElement("Name", message->GetMsgName());
            writer.writeTextElement("Number", message->GetMsgPhone());
            writer.writeTextElement("Content", message->GetMsgContent());
            writer.writeTextElement("Time", message->GetMsgTime());
            writer.writeEndElement();
        }
        writer.writeEndElement();
        writer.writeEndDocument();
        file.close();
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值