目前,如果我尝试解析
<parent>
First bit of text
<child>
</child>
Second bit of text
</parent>
我只能获取第一段文本
parent.text().get()
如何正确地获取parent
中的所有文本节点?
- 是否有一个好用的实用函数可以做到这一点?
- 如何通过迭代所有子节点来完成此操作?
没有将所有文本连接起来的函数;如果你想获取文本节点子元素列表,有两个选项:
XPath query:
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;
Manual iteration w/type checking:
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;
for (pugi::xml_node child: parent.children())
if (child.type() == pugi::node_pcdata)
std::cout << child.value() << std::endl;
std::stringstream ss;
node.print(ss);
return ss.str();