C++的xml解析器有很多,这个知乎回答里有一个列表:https://www.zhihu.com/question/32046606

  下面使用其中的RapidXml试试。

  官方地址: https://link.zhihu.com/?target=http%3A//rapidxml.sourceforge.net/

  Manual地址:http://rapidxml.sourceforge.net/manual.html

 

  这里有个例子:https://www.cnblogs.com/lancidie/p/3304089.html

  上面代码是在ubuntun下是编译不过的,我作了小的更改:

  编译环境:Ubuntu 16.04   、 gcc version 5.4.0

  下载了上面rapidxml 1.13版本,这个版本在此环境下,仍需要打一个补丁,其实就是在rapidxml_print.hpp开头加了以下几行声明,放在类内部开始即可。

1         template<class OutIt, class Ch> inline OutIt print_children(OutIt out, const xml_node<Ch> *node, int flags, int indent);
2         template<class OutIt, class Ch> inline OutIt print_element_node(OutIt out, const xml_node<Ch> *node, int flags, int indent);
3         template<class OutIt, class Ch> inline OutIt print_data_node(OutIt out, const xml_node<Ch> *node, int flags, int indent);
4         template<class OutIt, class Ch> inline OutIt print_cdata_node(OutIt out, const xml_node<Ch> *node, int flags, int indent);
5         template<class OutIt, class Ch> inline OutIt print_declaration_node(OutIt out, const xml_node<Ch> *node, int flags, int indent);
6         template<class OutIt, class Ch> inline OutIt print_comment_node(OutIt out, const xml_node<Ch> *node, int flags, int indent);
7         template<class OutIt, class Ch> inline OutIt print_doctype_node(OutIt out, const xml_node<Ch> *node, int flags, int indent);
8         template<class OutIt, class Ch> inline OutIt print_pi_node(OutIt out, const xml_node<Ch> *node, int flags, int indent);
View Code

相关文章: