Qt使用QXmlStreamWriter、QXmlStreamReader类操作读写Xml

Qt中使用QXmlStreamWriter、QXmlStreamReader类的xml读写的操作:

code:

void xml::xmlStreamWriter()
{
    QString strFile("test.xml");
    QFile *file  = new QFile(strFile);
    if (!file->open(QFile::WriteOnly | QFile::Text)) {
        qDebug() << QString("Cannot write file %1(%2).").arg(strFile).arg(file->errorString());
        return;
    }
    QXmlStreamWriter* wStream = new QXmlStreamWriter(file);
    wStream->setCodec("UTF-8"); // xml编码
    wStream->setAutoFormatting(true);   // 设置自动格式化启用,默认禁止自动化格式
    wStream->writeStartDocument();  // 开始文档
    wStream->writeStartElement("userinfo"); // 根节点
    wStream->writeAttribute("attr", "attr");    // 添加根节点属性
    wStream->writeTextElement("usersname", "100001");  // 子节点
    wStream->writeTextElement("password", "123456");
    wStream->writeTextElement("rememberPasswd", "false");  // 子节点
    wStream->writeTextElement("autoLogin", "false");
    wStream->writeEndElement();
    wStream->writeEndDocument();
    file->close();
}

void xml::xmlStreamReader()
{
    QString strFile("test.xml");
    QFile* file  = new QFile(strFile);
    if (!file->open(QFile::ReadOnly | QFile::Text)) {
        qDebug() << QString("Cannot read file %1(%2).").arg(strFile).arg(file->errorString());
        return;
    }
    QXmlStreamReader* rStream = new QXmlStreamReader(file);
    while (!rStream->atEnd()) {
        QXmlStreamReader::TokenType nType = rStream->readNext();
        if( nType == QXmlStreamReader::StartElement ){
            QString nameStr = rStream->name().toString();
            QXmlStreamAttributes  Attributes  = rStream->attributes();
            if(Attributes.hasAttribute("attr")){
                qDebug()<<Attributes.value("attr").toString();
            }
            if(QString::compare(nameStr,QString("usersname")) == 0) {
                rStream->readNext();
                useInfo->insert("usersname", rStream->text().toString());
                qDebug() << QStringLiteral("id:%1").arg(rStream->text().toString());
            }
            else if(QString::compare(nameStr,QString("password")) == 0) {
                rStream->readNext();
                useInfo->insert("password", rStream->text().toString());
                qDebug() << QStringLiteral("password:%1").arg(rStream->text().toString());
            }
            else if(QString::compare(nameStr,QString("rememberPasswd")) == 0) {
                rStream->readNext();
                useInfo->insert("rememberPasswd", rStream->text().toString());
                qDebug() << QStringLiteral("rememberPasswd:%1").arg(rStream->text().toString());
            }
            else if(QString::compare(nameStr,QString("autoLogin")) == 0) {
                rStream->readNext();
                useInfo->insert("autoLogin", rStream->text().toString());
                qDebug() << QStringLiteral("autoLogin:%1").arg(rStream->text().toString());
            }
        }
    }
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值