本文整理汇总了C++中XMLElement::GetNode方法的典型用法代码示例。如果您正苦于以下问题:C++ XMLElement::GetNode方法的具体用法?C++ XMLElement::GetNode怎么用?C++ XMLElement::GetNode使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XMLElement
的用法示例。
在下文中一共展示了XMLElement::GetNode方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Patch
void XMLFile::Patch(XMLElement patchElement)
{
pugi::xml_node root = pugi::xml_node(patchElement.GetNode());
for (pugi::xml_node::iterator patch = root.begin(); patch != root.end(); patch++)
{
pugi::xml_attribute sel = patch->attribute("sel");
if (sel.empty())
{
URHO3D_LOGERROR("XML Patch failed due to node not having a sel attribute.");
continue;
}
// Only select a single node at a time, they can use xpath to select specific ones in multiple otherwise the node set becomes invalid due to changes
pugi::xpath_node original = document_->select_single_node(sel.value());
if (!original)
{
URHO3D_LOGERRORF("XML Patch failed with bad select: %s.", sel.value());
continue;
}
if (strcmp(patch->name(), "add") == 0)
PatchAdd(*patch, original);
else if (strcmp(patch->name(), "replace") == 0)
PatchReplace(*patch, original);
else if (strcmp(patch->name(), "remove") == 0)
PatchRemove(original);
else
URHO3D_LOGERROR("XMLFiles used for patching should only use 'add', 'replace' or 'remove' elements.");
}
}
示例2: EvaluateToFloat
float XPathQuery::EvaluateToFloat(const XMLElement& element) const
{
if (!query_ || ((!element.GetFile() || !element.GetNode()) && !element.GetXPathNode()))
return 0.0f;
const pugi::xml_node& node = element.GetXPathNode() ? element.GetXPathNode()->node() : pugi::xml_node(element.GetNode());
return (float)query_->evaluate_number(node);
}
示例3: EvaluateToBool
bool XPathQuery::EvaluateToBool(const XMLElement& element) const
{
if (!query_ || ((!element.GetFile() || !element.GetNode()) && !element.GetXPathNode()))
return false;
const pugi::xml_node& node = element.GetXPathNode() ? element.GetXPathNode()->node() : pugi::xml_node(element.GetNode());
return query_->evaluate_boolean(node);
}
示例4: Evaluate
XPathResultSet XPathQuery::Evaluate(const XMLElement& element) const
{
if (!query_ || ((!element.GetFile() || !element.GetNode()) && !element.GetXPathNode()))
return XPathResultSet();
const pugi::xml_node& node = element.GetXPathNode() ? element.GetXPathNode()->node() : pugi::xml_node(element.GetNode());
pugi::xpath_node_set result = query_->evaluate_node_set(node);
return XPathResultSet(element.GetFile(), &result);
}
示例5: EvaluateToString
String XPathQuery::EvaluateToString(XMLElement element) const
{
if (!query_ || ((!element.GetFile() || !element.GetNode()) && !element.GetXPathNode()))
return String::EMPTY;
const pugi::xml_node& node = element.GetXPathNode() ? element.GetXPathNode()->node(): pugi::xml_node(element.GetNode());
String result;
result.Reserve(query_->evaluate_string(0, 0, node)); // First call get the size
query_->evaluate_string(const_cast<pugi::char_t*>(result.CString()), result.Capacity(), node); // Second call get the actual string
return result;
}
示例6: EvaluateToString
ea::string XPathQuery::EvaluateToString(const XMLElement& element) const
{
if (!query_ || ((!element.GetFile() || !element.GetNode()) && !element.GetXPathNode()))
return EMPTY_STRING;
const pugi::xml_node& node = element.GetXPathNode() ? element.GetXPathNode()->node() : pugi::xml_node(element.GetNode());
ea::string result;
// First call get the size
result.reserve((unsigned) query_->evaluate_string(nullptr, 0, node));
// Second call get the actual string
query_->evaluate_string(const_cast<pugi::char_t*>(result.c_str()), result.capacity(), node);
return result;
}