Qt工作笔记-对QXmlStreamReader的进一步认识(读取XML)
生活随笔
收集整理的這篇文章主要介紹了
Qt工作笔记-对QXmlStreamReader的进一步认识(读取XML)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
代碼如下:
#include <QApplication> #include <QDebug> #include <QFile> #include <QVector> #include <QXmlStreamReader>typedef struct SystemData{QString nameStr1;QString nameStr2;QString nameStr3;QString nameStr4;QString nameStr5;double dataDouble;int dataInt1=-1;int dataInt2=-1;int dataInt3=-1; }SystemData;typedef QVector<SystemData*> SystemVec;int main(int argc, char *argv[]) {QApplication a(argc, argv);QFile file("E:\\Qt2018\\ReadXMLLastDemo\\my.xml");if(!file.open(QFile::ReadOnly|QFile::Text)){qDebug()<<"讀取XML文件時,文件打開失敗";return false;}QXmlStreamReader reader;reader.setDevice(&file);int Count=0;SystemVec systemVec;SystemData *tempSysData=new SystemData;while(!reader.atEnd()){reader.readNext();if(reader.name().toString()=="name1"){tempSysData->nameStr1=reader.readElementText();}if(reader.name().toString()=="name2")tempSysData->nameStr2=reader.readElementText();if(reader.name().toString()=="name3")tempSysData->nameStr3=reader.readElementText();if(reader.name().toString()=="name4")tempSysData->nameStr4=reader.readElementText();if(reader.name().toString()=="name5")tempSysData->nameStr5=reader.readElementText();if(reader.name().toString()=="double")tempSysData->dataDouble=reader.readElementText().toDouble();if(reader.name().toString()=="int1")tempSysData->dataInt1=reader.readElementText().toInt();if(reader.attributes().hasAttribute("include"))tempSysData->dataInt2=reader.attributes().value("include").toString().toInt();if(reader.name().toString()=="int3")tempSysData->dataInt3=reader.readElementText().toInt();if(tempSysData->dataInt3!=-1){Count++;systemVec.append(tempSysData);//此處無Delete,直接new,數據已經加載進m_subsystemVec中了tempSysData=new SystemData;}}file.close();//如果多加了一個,現在進行釋放if(tempSysData->dataInt3!=-1){delete tempSysData;}return a.exec(); }xml文件如下:
<?xml version="1.0" encoding="utf-8"?> <test><data1><name1>你妹</name1><name2>你妹妹</name2><name3>你妹妹妹</name3><name4>你妹妹妹妹</name4><name5>你妹妹妹妹妹</name5><double>3.1415</double><int1>10</int1><attribution include="100"><int3>1000</int3></attribution></data1><data2><name1>你姐</name1><name2>你姐姐</name2><name3>你姐姐姐</name3><name4>你姐姐姐姐</name4><name5>你姐姐姐姐姐</name5><double>6.6666</double><int1>66</int1><attribution include="666"><int3>66666</int3></attribution></data2> </test>運行截圖如下:
總結
以上是生活随笔為你收集整理的Qt工作笔记-对QXmlStreamReader的进一步认识(读取XML)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++|Qt之QTcpServer基本用
- 下一篇: C++工作笔记-根据父类指针获取子类类型