QT5自学教程(71)——Reading xml
在上一节我们介绍了将xml内容写入到文件中,这一节我们将介绍从xml文件中读取xml内容并将其显示在控制台界面之上。
[1]新建一个Qt Console Application项目
[2]在项目中添加必要程序
main.cpp程序
//2014/9/16 wayne HDU //问题描述:读取xml文件中内容并将其显示在控制台界面之上 #include <QCoreApplication> #include <QDomDocument> #include <QDebug> #include <QFile> //声明函数 void ListElement(QDomElement root,QString tagName,QString attribute); int main(int argc,char *argv[]) { QCoreApplication a(argc,argv); QDomDocument doc; //打开文件用于读取xml QFile file("F:/test.xml"); if(!file.open(QIODevice::ReadOnly | QIODevice::Text)) { qDebug() << "Failed to open files"; return -1; } else { if(!doc.setContent(&file)) { qDebug() << "Failed to load document"; return -1; } file.close(); } //获得根元素 QDomElement root = doc.firstChildElement(); //读取指定节点下的元素 ListElement(root,"Book","Name"); qDebug() << "\r\nMore Advanced \r\n"; //输出更多的信息 //QDomNodeList类是包含QDomNode对象的列表 //elementsByTagName(const QString& tagname) 返回一个QDomNodeList,其中包含文档中所有包含名字tagname的元素 QDomNodeList books = root.elementsByTagName("Book"); //输出所有QDomNodeList对象中的元素 for(int i = 0; i < books.count(); ++i) { QDomNode bookNode = books.at(i); //判断对象是否是元素,若是则转换成元素对象并输出内容 if(bookNode.isElement()) { QDomElement book = bookNode.toElement(); qDebug() << "Chapter in " << book.attribute("Name"); ListElement(book,"Chapter","Name"); } } qDebug() << "Finished"; return a.exec(); } //定义读取函数 void ListElement(QDomElement root,QString attribute) { QDomNodeList items = root.elementsByTagName(tagName); qDebug() << "Total items = " << items.count(); for(int i = 0; i < items.count(); ++i) { QDomNode itemNode = items.at(i); if(itemNode.isElement()) { QDomElement itemElem = itemNode.toElement(); qDebug() << itemElem.attribute(attribute); } } }
[3]输出结果
小结
在这一节介绍了如何从一个xml文件中读取xml。PS:实验室的铁皮柜终于在业余人士(使用螺丝刀向反方向旋转锁芯)已经专业人士(大型工具直接处理)之下打开了,然后还换上了新的锁。但愿老板不知道铁皮柜发生了什么事情o(╯□╰)o。。。
2014/9/16
Wayne HDU