本文整理汇总了C++中XMLNode::Namespaces方法的典型用法代码示例。如果您正苦于以下问题:C++ XMLNode::Namespaces方法的具体用法?C++ XMLNode::Namespaces怎么用?C++ XMLNode::Namespaces使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XMLNode
的用法示例。
在下文中一共展示了XMLNode::Namespaces方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Export
bool SOAPSecAttr::Export(SecAttrFormat format,XMLNode &val) const {
if(format == UNDEFINED) {
} else if(format == ARCAuth) {
NS ns;
ns["ra"]="http://www.nordugrid.org/schemas/request-arc";
val.Namespaces(ns); val.Name("ra:Request");
XMLNode item = val.NewChild("ra:RequestItem");
if(!object_.empty()) {
XMLNode object = item.NewChild("ra:Resource");
object=object_;
object.NewAttribute("Type")="string";
object.NewAttribute("AttributeId")="http://www.nordugrid.org/schemas/policy-arc/types/soap/endpoint";
};
if(!action_.empty()) {
XMLNode action = item.NewChild("ra:Action");
action=action_;
action.NewAttribute("Type")="string";
action.NewAttribute("AttributeId")="http://www.nordugrid.org/schemas/policy-arc/types/soap/operation";
};
if(!context_.empty()) {
XMLNode context = item.NewChild("ra:Context").NewChild("ra:ContextAttribute");
context=context_;
context.NewAttribute("Type")="string";
context.NewAttribute("AttributeId")="http://www.nordugrid.org/schemas/policy-arc/types/soap/namespace";
};
return true;
} else if(format == XACML) {
NS ns;
ns["ra"]="urn:oasis:names:tc:xacml:2.0:context:schema:os";
val.Namespaces(ns); val.Name("ra:Request");
if(!object_.empty()) {
XMLNode object = val.NewChild("ra:Resource");
XMLNode attr = object.NewChild("ra:Attribute");
attr.NewChild("ra:AttributeValue") = object_;
attr.NewAttribute("DataType")="xs:string";
attr.NewAttribute("AttributeId")="http://www.nordugrid.org/schemas/policy-arc/types/soap/endpoint";
};
if(!action_.empty()) {
XMLNode action = val.NewChild("ra:Action");
XMLNode attr = action.NewChild("ra:Attribute");
attr.NewChild("ra:AttributeValue") = action_;
attr.NewAttribute("DataType")="xs:string";
attr.NewAttribute("AttributeId")="http://www.nordugrid.org/schemas/policy-arc/types/soap/operation";
};
if(!context_.empty()) {
XMLNode context = val.NewChild("ra:Environment");
XMLNode attr = context.NewChild("ra:Attribute");
attr.NewChild("ra:AttributeValue") = context_;
attr.NewAttribute("DataType")="xs:string";
attr.NewAttribute("AttributeId")="http://www.nordugrid.org/schemas/policy-arc/types/soap/namespace";
};
return true;
} else {
};
return false;
}
示例2: main
//.........这里部分代码省略.........
};
};
};
};
if(n == 0) {
logger.msg(ERROR,"Resource description is empty");
return 1;
};
int inum = 0;
for(std::map<std::string,std::string>::iterator i = interfaces.begin();
i != interfaces.end(); ++i) {
if(!i->second.empty()) {
logger.msg(INFO,"Resource description provides URL for interface %s: %s",i->first,i->second);
++inum;
};
};
if(inum == 0) {
logger.msg(ERROR,"Resource description provides no URLs for interfaces");
return 1;
};
logger.msg(INFO,"Resource description validation passed");
int depth = 1;
logger.msg(INFO,"Requesting ComputingService elements of resource description at %s",url.str());
XMLNodeContainer items;
bool query_passed = false;
bool all_elements = false;
if(!query_passed) {
logger.msg(INFO,"Performing /Services/ComputingService query");
if(!ac.squery("/Services/ComputingService",items,false)) {
logger.msg(INFO,"Failed to obtain resource description: %s",ac.failure());
} else if(items.Size() <= 0) {
logger.msg(INFO,"Query returned no elements.");
} else {
query_passed = true;
};
};
if(!query_passed) {
logger.msg(INFO,"Performing /ComputingService query");
if(!ac.squery("/ComputingService",items,false)) {
logger.msg(INFO,"Failed to obtain resource description: %s",ac.failure());
} else if(items.Size() <= 0) {
logger.msg(INFO,"Query returned no elements.");
} else {
query_passed = true;
};
};
if(!query_passed) {
all_elements = true;
logger.msg(INFO,"Performing /* query");
if(!ac.squery("/*",items,false)) {
logger.msg(INFO,"Failed to obtain resource description: %s",ac.failure());
} else if(items.Size() <= 0) {
logger.msg(INFO,"Query returned no elements.");
} else {
query_passed = true;
};
};
if(!query_passed) {
logger.msg(ERROR,"All queries failed");
return 1;
};
// In current implementation we can have different response
// 1. ComputingService elements inside every Item element (ARC)
// 2. Content of ComputingService elements inside every Item element (UNICORE)
// 3. All elements inside every Item element
// 4. Content of all elements inside every Item element
int cnum2 = 0;
for(int n = 0; n < items.Size(); ++n) {
if((items[n].Size() > 0) && (items[n]["ComputingService"])) {
// Case 1 and 3.
for(int nn = 0; nn < items[n].Size(); ++nn) {
if((all_elements) && (items[n].Name() != "ComputingService")) continue; // case 3
if(!CheckComputingService(items[n].Child(nn))) return 1;
++cnum2;
};
} else {
// Assuming 2 and 4. Because 4 can't be reliably recognised
// just assume it never happens.
XMLNode result;
NS ns("glue2arc",GLUE2_NAMESPACE);
items[n].New(result);
result.Namespaces(ns,true,0);
result.Name(result.NamespacePrefix(GLUE2_NAMESPACE)+":ComputingService");
if(!CheckComputingService(result)) return 1;
++cnum2;
};
};
if(cnum1 != cnum2) {
logger.msg(ERROR,"Number of ComputingService elements obtained from full document and XPath qury do not match: %d != %d",cnum1,cnum2);
return 1;
};
logger.msg(INFO,"Resource description query validation passed");
} else {
logger.msg(ERROR,"Unsupported command: %s",command);
return 1;
}
return 0;
}
示例3: NewChild
XMLNode XMLNode::NewChild(const char *name, const NS& namespaces, int n, bool global_order) {
XMLNode x = NewChild("", n, global_order); // placeholder
x.Namespaces(namespaces);
x.Name(name);
return x;
}