QT xml读写操作

main.cpp中

#include <QCoreApplication>
#include <QFile>
#include<QDebug>
#include<QXmlStreamWriter>
#include <QTextCodec>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QFile file("./testWrite.xml");
    if(!file.open(QFile::WriteOnly|QFile::Text))
      {  qDebug()<<"打开文件失败";}
    QXmlStreamWriter stream(&file);

    stream.setCodec(QTextCodec::codecForName("utf-8"));
    stream.setAutoFormatting(true);//开启自动格式化
    stream.writeStartDocument();  //从文档开始
    stream.writeStartElement("teachers");

        stream.writeStartElement("teacher");
        stream.writeAttribute("id","01");
        stream.writeTextElement("name","老王");
        stream.writeTextElement("book","金瓶梅");

        stream.writeStartElement("teacher");
        stream.writeAttribute("id","02");
        stream.writeTextElement("name","老是");
        stream.writeTextElement("book","金瓶梅");

        stream.writeStartElement("teacher");
        stream.writeAttribute("id","03");
        stream.writeTextElement("name","老六");
        stream.writeTextElement("book","金瓶梅");

        stream.writeEndElement();
        stream.writeEndDocument();
        file.close();
        qDebug()<<"存入文件成功";

        QFile file1("./testWrite.xml");
        if(!file1.open(QFile::ReadOnly|QFile::Text))
          {  qDebug()<<"打开文件失败";}
           QXmlStreamReader reader;
        reader.setDevice(&file1);
        while(!reader.atEnd())
        {
            QXmlStreamReader::TokenType type=reader.readNext();
            if(type==QXmlStreamReader::StartDocument)
                qDebug()<<reader.documentEncoding()<<reader.documentVersion();
            if(type==QXmlStreamReader::StartElement)
            {
                qDebug()<<"<"<<reader.name()<<">";
                if ((reader.attributes().hasAttribute("id"))&&(reader.attributes().hasAttribute("time")))
                               qDebug() << reader.attributes().value("id")<<" "<<reader.attributes().value("time");
            }

           if(type==QXmlStreamReader::EndElement)
                qDebug() << "</" << reader.name() << ">";
           if (type == QXmlStreamReader::Characters && !reader.isWhitespace())//会字符空白
                       qDebug() << reader.text();


           // 如果读取过程中出现错误,那么输出错误信息
           if (reader.hasError()) {
               qDebug() << "error: " << reader.errorString();
           }




       }
        file1.close();
    return a.exec();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

风赤

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

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

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

打赏作者

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

抵扣说明:

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

余额充值