当前位置: 首页>>代码示例>>C++>>正文


C++ XML::destroy方法代码示例

本文整理汇总了C++中XML::destroy方法的典型用法代码示例。如果您正苦于以下问题:C++ XML::destroy方法的具体用法?C++ XML::destroy怎么用?C++ XML::destroy使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在XML的用法示例。


在下文中一共展示了XML::destroy方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: load_xml


//.........这里部分代码省略.........
      }
    }
  } else {
    ACE_DEBUG((LM_ERROR, " /gather/network/sipaddr/@ip is null \n"));
  }

  //SevicesRules
  values.clear();

  if (xml.xpath("/gather/services/service/@id", values) == 0) {
    std::vector<std::string>::const_iterator sid = values.begin();
    int id = 0;
    SevicesRules sevicesRules;

    for (; sid != values.end(); sid++) {
      id = atoi(sid->c_str());
      int services;
      int port;
      memset(path, 0, 128);
      snprintf(path, 128 - 1, "/gather/services/service[@id='%d']/@name", id);
      std::vector<std::string> namelist;

      if (xml.xpath(path, namelist) == 0) {
        std::vector<std::string>::const_iterator name = namelist.begin();

        for (; name != namelist.end(); name++) {
          if ((services = ServiceDef::name2service(name->c_str())) < ServiceDef::SERVICE_OTHER) {
            services = ServiceDef::SERVICE_OTHER;
          }
        }
      } else {
        ACE_DEBUG((LM_ERROR, " %s is null\n", path));
      }

      memset(path, 0, 128);
      snprintf(path, 128 - 1, "/gather/services/service[@id='%d']/@port", id);
      std::vector<std::string> portList;

      if (xml.xpath(path, portList) == 0) {
        std::vector<std::string>::const_iterator p = portList.begin();

        for (; p != portList.end(); p++) {
          port = atoi(p->c_str());
        }
      } else {
        ACE_DEBUG((LM_ERROR, " %s is null\n", path));
      }

      memset(path, 0, 128);
      snprintf(path, 128 - 1, "/gather/services/service[@id='%d']/sipaddr/@ip", id);
      std::vector<std::string> sipaddrlist;
      std::vector<ClientRules> clientRulesList;

      if (xml.xpath(path, sipaddrlist) == 0) {
        std::vector<std::string>::const_iterator sipaddr = sipaddrlist.begin();

        for (; sipaddr != sipaddrlist.end(); sipaddr++) {
          ClientRules client;
          uint32_t sip;
          uint32_t smask;
          CIDR::cidr2addr(sipaddr->c_str(), sip, smask);
          client.sip = sip;
          client.smask = smask;
          client.audit = ClientRules::DROP;
          clientRulesList.push_back(client);
        }
      } else {
        ACE_DEBUG((LM_ERROR, " %s is null\n", path));
      }

      memset(path, 0, 128);
      snprintf(path, 128 - 1, "/gather/services/service[@id='%d']/dipaddr/@ip", id);
      std::vector<std::string> dipaddrlist;

      if (xml.xpath(path, dipaddrlist) == 0) {
        std::vector<std::string>::const_iterator dipaddr = dipaddrlist.begin();

        for (; dipaddr != dipaddrlist.end(); dipaddr++) {
          SevicesRules sevices;
          sevices.services = services;
          sevices.dport = htons(port);
          uint32_t sip;
          uint32_t smask;
          CIDR::cidr2addr(dipaddr->c_str(), sip, smask);
          sevices.dip = sip;
          sevices.dmask = smask;
          sevices.rejectList = clientRulesList;
          serviceList.push_back(sevices);
        }
      } else {
        ACE_DEBUG((LM_ERROR, " %s is null\n", path));
      }
    }
  } else {
    ACE_DEBUG((LM_ERROR, "xml file handle is failde, error= %s\n", xml.error()));
  }

  xml.destroy();
  return 0;
}
开发者ID:kernel0612,项目名称:multip_http_sensor,代码行数:101,代码来源:GatherPolicy.cpp


注:本文中的XML::destroy方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。