1. 程式人生 > >Qt簡單讀寫xml

Qt簡單讀寫xml

這裡只簡單舉例,讀寫是關聯在一起的。

xml文件的內容是:

<?xml version="1.0" encoding="UTF-8"?>
<fileinfo>
 <filename>test</filename>
 <filesize>1024MB</filesize>
</fileinfo>

首先在pro檔案中加入

QT       += xml

所有程式碼

#include "widget.h"
#include <QApplication>
#include <QtXml>
#include <QFile>
#include <QDebug>

void writeXml(){
    QDomDocument doc;
    QFile file("test.xml");
    if(file.open(QIODevice::ReadWrite)){
        qDebug()<<"open successful!";
        QString header("version=\"1.0\" encoding=\"UTF-8\"");
        doc.appendChild(doc.createProcessingInstruction("xml",header));
        QDomElement tagFileInfo = doc.createElement("fileinfo");

        //QDomElement相當於加標籤,QDomText相當於加內容<QDomElement>QDomText</QDomElement>
        QDomElement tagFileName = doc.createElement("filename");
        QDomText textFileName = doc.createTextNode("test");
        QDomElement tagFileSize = doc.createElement("filesize");
        QDomText textFileSize = doc.createTextNode("1024MB");

        tagFileName.appendChild(textFileName);
        tagFileSize.appendChild(textFileSize);
        tagFileInfo.appendChild(tagFileName);
        tagFileInfo.appendChild(tagFileSize);

        doc.appendChild(tagFileInfo);

        QTextStream stream(&file);

        stream<<doc.toString();
        qDebug()<<"write xml ok!!";

    }else{
        qDebug()<<"open file error!";
    }
}

void readXml(){
    QFile file("test.xml");
    if(file.open(QIODevice::ReadOnly)){
        qDebug()<<"open success";
        QDomDocument doc;
        doc.setContent(&file);
        //at(0)是<?xml version="1.0" encoding="UTF-8"?>,所以用at(1)
        QDomNodeList nodeList = doc.childNodes().at(1).childNodes();
        for(int i=0;i<nodeList.count();i++){
            QDomNode node = nodeList.at(i).firstChild();
            qDebug()<<nodeList.at(i).toElement().tagName()<<":"<<node.toText().data();
        }
    }
}

int main(int argc, char *argv[])
{
    writeXml();
    readXml();
}