作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 pugiXML 遍历函数从如下图所示的 XML 中提取数据。我可以使用此函数打印出 XML 文件中的所有数据,但是我无法将这些数据提取并存储到我的变量中。主要问题是我无法同时获取 node.name() 和 node.value() 。 node.name() 在 1 次迭代中出现 node.value() 在之后的迭代中出现。
const char* node_types[] =
{
"null","Element", "Name", "InstancePath", "InstancePathDepth", "FieldAmount", "DataType", "TypeName", "DataSize", "ArrayTypeName", "LowerBound", "UpperBound", "BitPosition", "IsArray", "IsElementary", "IsProgram", "IsResource", "IsString", "IsStruct", "IsTask"
};
// tag::impl[]
struct simple_walker : pugi::xml_tree_walker
{
virtual bool for_each(pugi::xml_node& node)
{
for (int i = 0; i < depth(); ++i) std::cout << " "; // indentation
std::cout << node.name()<<" "<< node.value() << "\n";
return true; // continue traversal
}
};
输出很好,与 XML 文件中的一样。
最佳答案
您可以跳过不是 node_element
类型的元素,并大致像这样使用 node.child_value()
:
virtual bool for_each(pugi::xml_node& node)
{
if (node.type() != pugi::node_element)
return true;
for (int i = 0; i < depth(); ++i) std::cout << " "; // indentation
std::cout << node.name()<<" "<< node.child_value() << "\n";
return true; // continue traversal
}
这是必要的,因为文本 (PCDATA) 节点与元素节点是分开的:https://pugixml.org/docs/manual.html#node_pcdata
关于c++ - PugiXML 从递归 xml_tree_walker 中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47330306/
我正在使用 pugixml 来解析文件。我一直在使用 xml_tree_walker 并且我有一个变量我想在 walker 遍历 xml 时修改。我目前正在使用全局变量但不想使用。有没有办法通过引用将
我正在尝试使用 pugiXML 遍历函数从如下图所示的 XML 中提取数据。我可以使用此函数打印出 XML 文件中的所有数据,但是我无法将这些数据提取并存储到我的变量中。主要问题是我无法同时获取 no
我是一名优秀的程序员,十分优秀!