网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

QTxml读写

    最近用QT在做一个项目,需要存储设备信息。

成都创新互联公司,是成都地区的互联网解决方案提供商,用心服务为企业提供网站建设、手机APP定制开发、小程序设计、系统按需定制开发和微信代运营服务。经过数10年的沉淀与积累,沉淀的是技术和服务,让客户少走弯路,踏实做事,诚实做人,用情服务,致力做一个负责任、受尊敬的企业。对客户负责,就是对自己负责,对企业负责。

deviceInfo.h文件:

#include #include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

class devicesInfo
{
//    Q_OBJECT
public:
    devicesInfo();
    ~devicesInfo();

private:
    QDomDocument doc;
    QString fileName;

//内部接口
private:
    void readXmlFile(); //读取xml文件

//外部接口
public:
    //获得ip地址的设备信息
    void getADeviceInfo(QString ip,QVector &deviceInfoVec);  
    //刷新设备信息到xml文件中
    void updateDeviceInfoXml(QString ip,QVector &deviceInfoVec);
};

deviceInfo.cpp文件:
devicesInfo::devicesInfo(){
    fileName = "devices.xml";
}

devicesInfo::~devicesInfo()
{

}

void devicesInfo::getADeviceInfo(QString ip, QVector &deviceInfoVec){
    //xml文件读到内存
    readXmlFile();
    //读取内存中的设备信息
    //获取根节点
    QDomElement root = doc.documentElement();

    QString tempInfo;
    QDomNode deviceNode = root.firstChild();
    for( ; !deviceNode.isNull(); deviceNode = deviceNode.nextSibling()){
        if(deviceNode.isElement()){
            QDomElement element = deviceNode.toElement();
            QDomNodeList deviceInfoList = element.childNodes();
            QString ipAdress = deviceInfoList.at(0).toElement().text();
            if(ipAdress != ip){
                //ip地址不匹配,则进入下次循环
                continue ;
            }
            //ip地址匹配,则把相应的设备信息放到vector中
            for(int i=1; i
void devicesInfo::updateDeviceInfoXml(QString ip, QVector &deviceInfoVec){
    //读取xml文件到内存
    readXmlFile();
    //更新内存中的设备信息
    //获取根节点
    QDomElement root = doc.documentElement();

    QStringList tempInfoList;
    QDomNode deviceNode = root.firstChild();
    //记录每个设备中的属性信息是否成功更新,如果没有更新成功,则需要增加一个设备属性,默认是没有更新
    bool updateAttrInfoBool;
    //xml中这次需要更新的每个设备属性对应一个bool值,这次用户更新的设备信息中仍有该属性则true,否则false
    QVector xmlDeviceInfoBoolVec;
    qDebug() << "in update function:" << endl;
    //顺利遍历,寻找相应的ip地址,更新其中的设备信息
    for( ; !deviceNode.isNull(); deviceNode = deviceNode.nextSibling()){
        if(deviceNode.isElement()){
            QDomElement deviceElement = deviceNode.toElement();
            QDomNodeList deviceInfoList = deviceElement.childNodes();
            QString ipAdress = deviceInfoList.at(0).toElement().text();
            if(ipAdress != ip){
                //ip地址不匹配,则跳出本循环,进入下次循环
                qDebug() << "xml 中的 ip:" << ipAdress << " out." << endl;
                continue ;
            }
            //ip地址匹配
            //xml中的该匹配设备每个属性设置一个对应的 bool 值,并且默认是false
            for(int i=0; i            
            
                        
新闻标题:QTxml读写
分享网址:http://bjjierui.cn/article/ghcoch.html

其他资讯