最近用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