环境:Windows Xp + Qt 4.8.4+Qt Creator2.6.2
目录一、解析XML文档二、写入XML文档正文【领QT开拓教程学习资料,点击下方链接莬费领取↓↓,先码住不迷路~】
点击→领取「链接」

一、解析XML文档
1.新建Qt掌握台运用,项目名称为myXmlStream,完成后将myXmlStream.pro文件的第一行代码变动为:
QT += core xml
然后保存该文件。
2.然后打开main.cpp文件,将内容变动如下:
#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(); return a.exec();}
可以看到流读取器便是在一个循环中通过利用readNext()来不断读取暗号的,这里可以对不同的暗号和不同的内容进行不同的处理,既可以在本函数中进行,也可以在其他函数或者其他类中进行。可以将前面天生的my.xml文件复制到源码目录,然后运行程序,查看效果。
二、写入XML文档
与QXmlStreamReader对应的是QXmlStreamWriter,它通过一个大略的流API供应了一个XML写入器。QXmlStreamWriter的利用是十分大略的,只须要调用相应的暗号的写入函数来写入干系数据即可。
将前面主函数的内容变动为:
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();}
这里利用了setAutoFormatting(true)函数来自动设置格式,这样会自动换行和添加缩进。然后利用了writeStartDocument(),该函数会自动添加首行的XML解释(即<?xmlversion="1.0" encoding="UTF-8"?>),添加元素可以利用writeStartElement(),不过,这里要把稳,一定要在元素的属性、文本等添加完成后,利用writeEndElement()来关闭前一个打开的元素。在末了利用writeEndDocument()来完成文档的写入。现在大家可以运行程序了,这时会在项目目录中天生一个XML文档。
结语数据库和XML在很多程序中都常常用到,它们的利用也总是和数据的显示联系起来,以是学习好数据库的知识也是很主要的,它们可以说是密不可分的。干系内容,大家也可以参考《Qt Creator快速入门》的干系章节以及《Qt 及Qt Quick开拓实战精解》的数据管理系统的例子,里面同时运用了数据库和XML