C/C++ xml库比较

举报
风中的叶子 发表于 2019/09/25 11:26:32 2019/09/25
【摘要】 pugiXML和rapidXML库同样具有tinyXML的优点,但比tinyXML库速度还要速度更快很多倍。同时,在rapidXML的使用手册中,作者的对比速度,pugiXML和rapidXML确实有速度优势。

早期总结转发。

------------------------

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应该效果更好。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。