常见C/C++ XML解析器有tinyxml、XERCES、squashxml、xmlite、pugxml、libxml等等,这些解析器有些是支持多语言的,有些只是单纯C/C++的。若是你是第一次接触到XML解析,那么关于XML解析器的选择问题的确使人头疼,咱们先看一下这些解析器有哪些特色。html
官方网址:http://xerces.apache.org/xerces-c/apache
Xerces前身是IBM的XML4C,XML4C也是一种功能强大的XML解析器,以后交给Apache基金会管理,遂更名为Xerces,Xerces-C++让你的程序提供读写XML数据更加容易,提供的共享库经过DOM、SAX、SAX2 API等方式对XML文档进行解析、生成、操做和验证。api
Xerces-C++忠实于XML 1.0建议和相关标准。数据结构
Xerces-C++解析器高性能、模块化而且可扩展。相关开发资料也比较完善。模块化
除了C++版本,Xerces同时还提供Xerces Java,Xerces Perl等版本。性能
官方网址:http://www.grinninglizard.com/tinyxml/ui
TinyXML相比Xerces要功能简单些,正如其名Tiny,使用方法也比较简单,TinyXML也是一个开源的解析XML解析库,用于C++,支持Windows和Linux。TinyXML经过DOM模型遍历和分析XML。官方文档:spa
http://www.grinninglizard.com/tinyxmldocs/index.html操作系统
官方地址:http://ostatic.com/squashxml.net
这个解析器在国内彷佛少人使用,这个解析器也有些历史了。squashXML基于DOM Level2,也是一个XML轻量级的解析器。天缘之因此把这个写上是天缘比较看重这个解析器的目录划分及使用说明,易懂并且易上手。
官方网址:http://www.xmlbooster.com/
XMLBooster开发关注点比较有特点,更加关注解析性能,声称:“Application integration of XML data cannot get any simpler or any faster: instead of dealing with sophisticated api (such as DOM or SAX), use a convenient data structure, generated to suit your specific purpose, in the language of your choice. ”。
针对特殊需求使用更加方便的数据结构以提升性能。
官方地址:http://xmlsoft.org/
LibXML原本是为Gnome项目开发(C开发),以后被普遍使用,功能很是强大,几乎适合于常见的全部操做系统下编译和开发使用。libxml++(地址:http://libxmlplusplus.sourceforge.net/)是对libxml XML解析器的C++封装版本。此外还有各类语言封装包,参加官方连接。
除了上述XML解析库外,还有一些XML解析器(参考:http://www.garshol.priv.no/xmltools/platform/cpp.html),好比Berkely DBXML(BDB)等,有兴趣的读者可自行Google搜索。
尽管XML解析器有不少种,并且功能差别很大,甚至是支持跨平台、多语言,可是对于你的应用而言,尽可能选择一种相对熟悉、功可以用的便可,不必去追求庞杂的解析器,咱们只需关注:功可以用、相对稳定、适合扩展这三个功能便可。一旦有问题,修正和扩展都要更为容易。