现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

QT DOM方式读取xml文件(QDomElement)

2014-08-02 06:31 工业·编程 ⁄ 共 1274字 ⁄ 字号 暂无评论

xml文件格式:

<?xml version="1.0"?>
<tree id="0">
    <item id="1"  open="1"  text="一级" im0="leaf.gif" im1="folderOpen.gif" im2="folderClosed.gif" >
        <item id="5"  select="1" text="二级" im0="leaf.gif" im1="folderOpen.gif" im2="folderClosed.gif" ></item>
        <item id="6"  text="空泡" im0="leaf.gif" im1="folderOpen.gif" im2="folderClosed.gif" ></item>
    </item>
</tree>

头文件:
#include <QFile>  
#include <QString> 
#include <QDomDocument> 
#include <QtXml> 
#include <QXmlStreamReader> 

示例代码:
//DOM方式查找在XML文件二级目录中是否有sItemName节点,有返回1,无返回0,错误返回-1; 
//sXmlFilePath:xml完整路径打的文件名(c:\doc\ss.xml) 
int CAppletGenerator::searchTaskMenuTreeItem(QString sXmlFilePath,QString sItemName))  

 
    QFile file(sXmlFilePath); 
    if (!file.open(QFile::ReadOnly | QFile::Text)) { 
        return -1; 
    } 
     
    QDomDocument domDocument; 
    if (!domDocument.setContent(&file, true)) { 
        file.close(); 
        return -1; 
    } 
    QDomElement tree      = domDocument.documentElement(); 
    QDomElement firstItem = tree.firstChildElement(); 
 
    //把全部二级item存放在list中 
    QDomNodeList secondItemlist = firstItem.childNodes(); 
 
    for(int i = 0;i < secondItemlist.count();i++) { 
 
        QDomNode node    = secondItemlist.at(i); 
        QString textname = node.toElement().attribute("text"); 
        if (textname == sItemName) { 
            return 1; 
        } 
    }//end for 
    return 0; 

给我留言

留言无头像?