本文整理汇总了C++中XML::create方法的典型用法代码示例。如果您正苦于以下问题:C++ XML::create方法的具体用法?C++ XML::create怎么用?C++ XML::create使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XML
的用法示例。
在下文中一共展示了XML::create方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: load_xml
int GatherPolicy::load_xml(void)
{
XML xml;
if (xml.create(rule_file_) < 0) {
strncpy(err_, xml.error(), sizeof(err_));
return -1;
}
char path[128] = {0};
std::vector<std::string> values;
//ClientRules
if (xml.xpath("/gather/network/sipaddr/@ip", values) == 0) {
std::vector<std::string>::const_iterator addr = values.begin();
for (; addr != values.end(); addr++) {
snprintf(path, 128 - 1, "/gather/network/sipaddr[@ip='%s']", addr->c_str());
std::vector<std::string> audit;
if (xml.xpath(path, audit) == 0) {
std::vector<std::string>::const_iterator a = audit.begin();
ClientRules rules;
CIDR::cidr2addr(addr->c_str(), rules.sip, rules.smask);
for (; a != audit.end(); a++) {
if (strcasecmp(a->c_str(), "yes") == 0) {
rules.audit = ClientRules::GATHER;
} else {
rules.audit = ClientRules::DROP;
}
}
clientList.push_back(rules);
} else {
ACE_DEBUG((LM_ERROR, " %s is null", path));
}
}
} 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;
//.........这里部分代码省略.........