QT xml读写操作

main.cpp中

#include 
#include 
#include
#include
#include 
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();
}

你可能感兴趣的:(Qt)