pugixml写入及读取配置文件

写入配置

pugi::xml_document doc;
    auto usbLinkLogicConfig = doc.append_child("USBLinkLogicConfig");

    for (auto iter = linkLogics.begin(); iter != linkLogics.end(); iter++)
    {
        auto linkLogic = usbLinkLogicConfig.append_child("LinkLogic");
        linkLogic.append_child("LinkName").append_attribute("name").set_value(iter->second->name);

        linkLogic.append_child(pugi::node_comment).set_value("condType 触发条件( 1:火警 2:一级预警 3:二级报警 4:三级火警 5:手动报警 6:CO浓度 7:烟雾浓度 8:温度 9:H2浓度 10:VOC浓度 11:开关量输入高 12:开关量输入低)");
        linkLogic.append_child(pugi::node_comment).set_value("operator 条件运算符(=:0 >:1 <:2)");
        linkLogic.append_child(pugi::node_comment).set_value("condLogic 逻辑符号(null:0 |:1 &:2)");
        for (int i = 0; i < 10; i++)
        {

            auto linkCond = linkLogic.append_child("LinkCond");
            linkCond.append_attribute("devTypeId").set_value(static_cast<int>(iter->second->linkCond[i].devTypeId));
        }

        linkLogic.append_child(pugi::node_comment).set_value("actionType 动作类型(1:开阀 2:关阀 3:闭合JDG 4:断开JDG 5:IO输出高 6:IO输出低)");
        for (int i = 0; i < 10; i++)
        {

            auto linkAction = linkLogic.append_child("LinkAction");
            linkAction.append_attribute("devTypeId").set_value(static_cast<int>(iter->second->linkAction[i].devTypeId));
        }
    }

doc.save_file(m_cfgFilePath.toLocal8Bit().toStdString().c_str());

读取配置

    pugi::xml_document doc;
    if (!doc.load_file(m_cfgFilePath.toLocal8Bit().toStdString().c_str()))
    {
        return false;
    }
    pugi::xml_node root = doc.child("USBLinkLogicConfig");
    for (pugi::xml_node linkLogic = root.child("LinkLogic"); linkLogic; linkLogic = linkLogic.next_sibling("LinkLogic"))
    {
        std::shared_ptr<AlarmLinkLogic> spLinkLogic(new AlarmLinkLogic);
        strcpy(spLinkLogic->name, linkLogic.child("LinkName").attribute("name").as_string());
        int condSize = 0;
        int actionSize = 0;
        for (pugi::xml_node condLink = linkLogic.child("LinkCond"); condLink; condLink = condLink.next_sibling("LinkCond"))
        {
            spLinkLogic->linkCond[condSize].devTypeId = static_cast<DeviceTypeId>(condLink.attribute("devTypeId").as_int());
                  condSize++;
        }

        for (pugi::xml_node actionLink = linkLogic.child("LinkAction"); actionLink; actionLink = actionLink.next_sibling("LinkAction"))
        {
            spLinkLogic->linkAction[actionSize].devTypeId = static_cast<DeviceTypeId>(actionLink.attribute("devTypeId").as_int());
              actionSize++;
        }

        linkLogics.push_back(spLinkLogic);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随风逐流wrx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值