资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

QTxml读写-创新互联

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

成都创新互联是一家以重庆网站建设、网页设计、品牌设计、软件运维、营销推广、小程序App开发等移动开发为一体互联网公司。已累计为广告设计等众行业中小客户提供优质的互联网建站和软件开发服务。
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

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享名称:QTxml读写-创新互联
转载注明:http://cdkjz.cn/article/egcjp.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220