C/C++ xml库比较
早期总结转发。
------------------------
XML库比较
1 xercesXML等
这几个库都属于功能复杂且强大,支持(XML标准)验证,“重量级”XML解析库。
XMLBooster解析器:从介绍上功能和性能都比较强大,支持DTD,采用类似数据结构的解析方法,但是收费软件。有个轻量级的XMLBoosterLite是免费的,但只支持JAVA和C#。
LibXML/LibXML2解析器:功能强大,支持的操作系统的编译语言较多。支持SAX/DOM访问,支持验证。免费软件,库比较大。
XercesXML解析器:功能强大,支持SAX/DOM/SAX2访问。免费软件,库非常大,比较复杂。
2 tinyXML
比较常用的轻量级xml解析库,速度较快,使用较多,有一定使用局限(对空格等特殊字符解析后内容会变化)。TinyXml是一个基于DOM模型的、非验证的轻量级C++解释器。
3 pugiXML
和tinyXML类似,同样是基于DOM模型的非验证轻量级开源C++库,支持Xpath。
4 rapidXML
和tinyXML类似,同样是基于DOM模型的非验证轻量级开源C++库,号称处理速度最快的XML解析库。主要是通过解析时直接在输入参数的字符串存储空间上对字符串进行解析及修改,减少中间字符串复制来提高处理速度。
5 几种库比较
pugiXML和rapidXML库同样具有tinyXML的优点,但比tinyXML库速度还要速度更快很多倍。同时,在rapidXML的使用手册中,作者的对比速度,pugiXML和rapidXML确实有速度优势。
结论:
在实际项目中我经过测试选用了pugiXML,原因在于一方面其性能优秀,另一方面使用简单。pugiXML在解析节点失败时返回空字符串,而不是空指针,避免了代码中大量的空指针异常判断。因为我们在解析中只有少部分节点时必须存在的,大部分节点是可有可无的,实际业务逻辑可以根据业务需要增加节点存在的判断,而不必要强制xml解析逻辑进行判断。
我们的代码xml解析更多的是内存XML字符串的解析,使用pugiXML解析后有一定的性能提升。如果在项目中有XML文件读取解析后重复使用内容的,使用pugiXML应该效果更好。
- 点赞
- 收藏
- 关注作者
评论(0)