成都网站建设设计

将想法与焦点和您一起共享

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://chengdu.cdxwcx.cn/article/ghcoch.html