QT5自学教程(71)——Reading xml

前端之家收集整理的这篇文章主要介绍了QT5自学教程(71)——Reading xml前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

猜你在找的XML相关文章