pugiget 所有文本节点 (PCDATA),而不仅仅是第一个
pugiget all text nodes (PCDATA), not just the first
目前,如果我尝试解析
<parent>
First bit of text
<child>
</child>
Second bit of text
</parent>
我只得到First bit of text
parent.text().get()
抓取parent
中的所有文本节点的正确方法是什么?
- 有没有一个很好的实用程序功能?
- 如何遍历所有子项?
没有连接所有文本的函数;如果要获取文本节点子节点的列表,则有两个选项:
-
XPath 查询:
pugi::xpath_node_set ns = parent.select_nodes("text()"); for (size_t i = 0; i < ns.size(); ++i) std::cout << ns[i].node().value() << std::endl;
-
带类型检查的手动迭代:
for (pugi::xml_node child = parent.first_child(); child; child = child.next_sibling()) if (child.type() == pugi::node_pcdata) std::cout << child.value() << std::endl;
请注意,如果您可以使用 C++11,那么第二个选项可以更简洁:
for (pugi::xml_node child: parent.children())
if (child.type() == pugi::node_pcdata)
std::cout << child.value() << std::endl;
(当然,您也可以使用 Ranged for 遍历xpath_node_set)
在我拥有的pugixml版本中,我可以使用print方法将所有内部xml从节点获取到流中。 例如: std::stringstream ss;
node.print(ss);
return ss.str();
相关文章:
- 为什么这个案例陈述需要一个"if else"而不仅仅是一个"if"?
- std::find,返回所有找到的值的替代方法,而不仅仅是存在重复的向量的第一个值
- OpenGL 2D游戏只绘制第二个精灵纹理而不是第一个
- 使用 fstream 在空格分隔文件中查看下一项(不仅仅是一个字符)的方法
- 将参数初始化为构造函数,而不是第一个
- 如何正确抛出一个需要的不仅仅是构造函数的异常
- pugiget 所有文本节点 (PCDATA),而不仅仅是第一个
- 当第一个 itr 在最后一个 itr 之后时,std::vector 范围构造函数的官方行为是什么?
- 如何按第一个,然后是第二个,然后是第三个对 2d 数组进行排序,..使用 C++ 的列
- GLSL着色:整个屏幕都是彩色的,而不仅仅是一个四边形
- 哪个字符是 c++ 中 4 个字符中的第一个
- 如果键已经存在,为什么 stl map 会插入另一个值,而不仅仅是更改它
- 哪个比特是第一个,当你比特移位时,它真的朝那个方向移位了吗
- 为什么您必须声明/创建一个单独的变量来通过引用调用,而不仅仅是在函数调用中创建一个自动对象
- 反转矢量项而不是第一个?C++
- 是否有可能在某个表达式中定义两个单词,而不仅仅是一个单词
- 代码是打印相同的值时,它应该随机生成每一次,而且它不打印数组中的第一个值
- 为什么要创建一个名为*foo()的方法,而不仅仅是foo()呢?
- 为什么我的程序读取的不仅仅是我的txt文件的第一行?
- 我的印象是,下面的脚注32适用于整个段落§3.4.1/8,而不仅仅是其第三个要点