Qt 读写 XML 文件

Qt 读写 XML 文件

#include <QXmlStreamWriter>     //头文件

(1)写入 XML :
    QString filePath = "xxx";
    QFile file(filePath);
    if(!file.open(QIODevice::WriteOnly || QIODevice::Text || QIODevice::Truncate)){   // QIODevice::Truncate 代表打开文件时清空文件内容
        qDebug() << "open xml file failed";
        return;
    }

    QXmlStreamWriter writer(&file);
    writer.setAutoFormatting(true);    //设置自动格式化

    writer.writeStartDocument("1.0");   //文档开始
    writer.writeStartElement("batch");  //节点
    writer.writeAttribute("batchType", "xxx");
    writer.writeStartElement("entity");  //子节点

    //开始填写内容
    writer.writeTextElement("StationID", "54511");  //元素
    ...

    writer.writeEndElement();    //子节点结尾
    writer.writeEndElement();    //节点结尾
    writer.writeEndDocument();    //文档结尾

    file.close();

    以上代码最终会生成的 XML 内容如下:
        <batch batchType="status">
            <entity>
                <StationID>54511</StationID>
                ...
            </entity>
        </batch>

(2)读取 XML :
    QString filePath = "xxx";
    QFile file(filePath);
    if(!file.open(QIODevice::ReadOnly || QIODevice::Text || QIODevice::Truncate)){
        qDebug() << "open xml file failed";
        return;
    }

    QXmlStreamReader reader(&file);
    while(!reader.atEnd() && !reader.hasError()){
        QXmlStreamReader::TokenType token = reader.readNext();    //获取一行的解析令牌
        if (token == QXmlStreamReader::StartDocument){
            continue;
        }
        if (token == QXmlStreamReader::StartElement)
        {
            if (reader.name() == "xxx")   //xxx属性节点
            {
                QString attributeValue = reader.attributes().value("attribute").toString();
                qDebug() << "Attribute value: " << attributeValue;
            }
            else if (reader.name() == "xxx")   //xxx文本值
            {
                QString textValue = reader.readElementText();
                qDebug() << "Text value: " << textValue;
            }
        }
    }

    file.close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

enyp80

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值