代碼出自Qt creator 快速入門,代碼如下
從xml中讀取資料
main.cpp
#include <QtCore/QCoreApplication>#include <QFile>#include <QXmlStreamReader>#include <QXmlStreamWriter>#include <QDebug>int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); QFile file("../myXmlStream/my.xml"); if (!file.open(QFile::ReadOnly | QFile::Text)) { qDebug()<<"Error: cannot open file"; return 1; } QXmlStreamReader reader; // 設定檔案,這時會將流設定為初始狀態 reader.setDevice(&file); // 如果沒有讀到文檔結尾,而且沒有出現錯誤 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")) qDebug() << reader.attributes().value("id"); } if (type == QXmlStreamReader::EndElement) qDebug() << "</" << reader.name() << ">"; if (type == QXmlStreamReader::Characters && !reader.isWhitespace()) qDebug() << reader.text(); } // 如果讀取過程中出現錯誤,那麼輸出錯誤資訊 if (reader.hasError()) { qDebug() << "error: " << reader.errorString(); } file.close(); return a.exec();}
寫入資料
main.cpp
#include <QtCore/QCoreApplication>#include <QFile>#include <QXmlStreamReader>#include <QXmlStreamWriter>#include <QDebug>int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); QFile file("../myXmlStream/my2.xml"); if (!file.open(QFile::WriteOnly | QFile::Text)) { qDebug() << "Error: cannot open file"; return 1; } QXmlStreamWriter stream(&file); stream.setAutoFormatting(true); stream.writeStartDocument(); stream.writeStartElement("bookmark"); stream.writeAttribute("href", "http://qt.nokia.com/"); stream.writeTextElement("title", "Qt Home"); stream.writeEndElement(); stream.writeEndDocument(); file.close(); qDebug() << "write finished!"; return a.exec();}