目前,如果我尝试解析
<parent>
First bit of text
<child>
</child>
Second bit of text
</parent>
我只使用
获得First bit of text
parent.text().get()
在parent
中抓取所有文本节点的正确方法是什么?
答案 0 :(得分:4)
没有连接所有文本的功能;如果要获取文本节点子项列表,可以使用以下两个选项:
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;
手动迭代w /类型检查:
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来迭代xpath_node_set)
答案 1 :(得分:0)
在我的pugixml版本中,我可以使用print方法将所有内部xml从节点转换为流。例如。:
std::stringstream ss;
node.print(ss);
return ss.str();