很简单,如下所示:
#include <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();
*/
// 写入
QFile file("../myxmlstream/my2.xml");
if (!file.open(QFile::WriteOnly | QFile::Text)){qDebug()<< "Error: cannot open file";
return 1;
}
QXmlStreamWriter writer(&file);
writer.setAutoFormatting(true); // 会自动换行和缩进
writer.writeStartDocument(); // 会自动添加 XML 说明
writer.writeStartElement("bookmark");
writer.writeAttribute("href", "http://www.qt.io/");
writer.writeTextElement("title", "Qt Home");
writer.writeEndElement();
writer.writeEndDocument();
file.close();
qDebug()<< "write finished";
return a.exec();}