Qt读取XML文件

简介: Qt读取XML文件

xml文件格式

<sura_list>
<sura number="1">
  <aya number="1">
    <translation><![CDATA[读取字段]]></translation>
    <footnotes></footnotes>
  </aya>
  <aya number="2">
    <translation><![CDATA[读取字段]]></translation>
    <footnotes></footnotes>
  </aya>
  <aya number="3">
    <translation><![CDATA[读取字段]]></translation>
    <footnotes></footnotes>
  </aya>
  <aya number="4">
    <translation><![CDATA[读取字段]]></translation>
    <footnotes></footnotes>
  </aya>
  <aya number="5">
    <translation><![CDATA[读取字段]]></translation>
    <footnotes></footnotes>
  </aya>
  <aya number="6">
    <translation><![CDATA[读取字段]]></translation>
    <footnotes></footnotes>
  </aya>
  <aya number="7">
    <translation><![CDATA[读取字段读取字段读取字段]]></translation>
    <footnotes></footnotes>
  </aya>
</sura>

读取代码

    QFile file;         
    QString nodename; 
    QString outData;
    file.setFileName(QDir::currentPath() + "\\doc\\chinese_makin_v1.0.2-xml.1.xml");
    if (!file.exists())
    {
        qDebug() << "xml path error";
    }
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text))   
    {
        qDebug() << "mxl open error";
    }
    else
    {
        QXmlStreamReader xmlreader(&file);   
        while (!xmlreader.atEnd() || !xmlreader.hasError())
        {
            xmlreader.readNextStartElement();          
            nodename = xmlreader.name().toString();    
            if (nodename == "sura" && xmlreader.isStartElement())
            {
                QString str = xmlreader.attributes().value("number").toString();
                outData.append(QString("\n%1 \n").arg(str));
                while (!(nodename == "sura" && xmlreader.isEndElement()))
                {
                    xmlreader.readNextStartElement();
                    nodename = xmlreader.name().toString();
                    if (nodename == "aya" && xmlreader.isStartElement())
                    {
                        QString str = xmlreader.attributes().value("number").toString();
                        while (!(nodename == "aya" && xmlreader.isEndElement()))
                        {
                            xmlreader.readNextStartElement();
                            nodename = xmlreader.name().toString();
                            if (nodename == "translation" && xmlreader.isStartElement())
                            {
                                while (!(nodename == "translation" && xmlreader.isEndElement()))
                                {
                                    QString str = xmlreader.readElementText();
                                    outData.append(QString("%1 \n").arg(str));
                                }
                            }
                            //else if (nodename == "footnotes" && xmlreader.isStartElement())
                            //{
                            //    while (!(nodename == "footnotes" && xmlreader.isEndElement()))
                            //    {
                            //        QString str = xmlreader.readElementText();
                            //        qDebug() << "footnotes" << str;
                            //    }
                            //}
                        }
                    }
                }
            }
        }
    }
    file.close();
相关文章
|
9天前
|
XML 数据格式
小米备份descript.xml文件
小米备份descript.xml文件
13 0
|
20天前
|
XML Java 数据库连接
mybatis中在xml文件中通用查询结果列如何使用
mybatis中在xml文件中通用查询结果列如何使用
20 0
|
22天前
|
XML JavaScript 前端开发
xml文件使用及解析
xml文件使用及解析
|
29天前
|
计算机视觉 数据格式
使用opencv在Qt控件上播放mp4文件
使用opencv在Qt控件上播放mp4文件
29 2
|
29天前
【QT】创建、打开QT项目只显示.pro文件的问题解决
【QT】创建、打开QT项目只显示.pro文件的问题解决
|
2月前
|
存储 C++
基于Qt的简易文件压缩与解压缩工具设计与实现
基于Qt的简易文件压缩与解压缩工具设计与实现
17 1
|
2月前
|
XML 关系型数据库 MySQL
【Mysql】有关数据库中一对多/一对一,多对一xml中文件映射问题
【Mysql】有关数据库中一对多/一对一,多对一xml中文件映射问题
12 0
|
2月前
|
XML C# 数据格式
使用C#操作XML文件
使用C#操作XML文件
12 0
|
2月前
|
Java
java实现遍历树形菜单方法——映射文件VoteTree.hbm.xml
java实现遍历树形菜单方法——映射文件VoteTree.hbm.xml
11 0
|
2月前
|
监控 安全 Linux
Qt 文件类实战:解锁文件操作的无限可能
Qt 文件类实战:解锁文件操作的无限可能
48 1