C++,几个小巧开源xml库
来源:互联网 发布:三星s7edge清空数据 编辑:程序博客网 时间:2024/06/04 19:01
我只是找个地方标记一下,省以后忘了
1、CMarkup
这个只能算是半开源的。网上能下载到的CMarkup源代码,绝大多数是CMarkup 付费版的阉割版本。当然,免费版已经能满足基本的读需求,对于写需求则不能很好满足。
我只评论免费版。
CMarkup采用EDOM模型,容错性不错。可以读根节点多于一个的“非法xml文档”(xml文档根节点只有一个),例如下面的文档,CMarkup就可以处理。
<A>aaa</A><B>bbb</B>
CMarkup是"只进式" 的 。在我看来,CMarkup免费版的优点就是读效率很好,当然这是以增加用户出错几率为代价的。还以上面的文档为例,当CMarkup::FindElem("B")后,在CMarkup::FindElem("A"),就找不到了,只有CMarkup::Reset后才能找到。
尽管CMarkup提供了IntoElem,OutOfElem来导航,使用户可以在父、子节点间切换,但是如果用户忘了OutOfElem呢?如果真是这样,错误将不幸发生。
CMarkup免费版也不能移除节点的属性,而且在添加新节点时有一半的几率出错,也就是要么重新从根节点开始生成xml文档,要么就不要在现有xml文档中添加节点。
我的建议是,读xml使用CMarkup,写xml敬而远之。
2、TinyXml,TinyXml2
采用DOM模型
注意,TinyXml2不是TinyXml的升级版,两个是不同的xml库。TinyXml2和TinyXml同根生,只是TinyXml2更快效率更高(这以牺牲TinyXml的一部分功能为代价)
使用TinyXml或TinyXml2,只需要注意 TiXmlDocument实例的资源释放就行,其他的资源TiXmlDocument代为管理。
不支持多个根节点的xml文档解析。不支持宽字符串的xml文档解析。也就是说,使用TinyXml或TinyXml2要做好随时在wchar_t 和char切换的心里准备。
3、pugiXml
采用DOM模型
有兴趣的可搜索pugxml(不是pugixml)
pugiXml可以解析多个根节点的xml文档,这一点和CMarkup是一样的。
pugiXml支持宽字符串,只要打开PUGIXML_WCHAR_MODE宏就可以。 而且,pugiXml使用了命名空间,所以可以方便的生成两份xml库,一份支持char,一份支持wchar_t
pugiXml的接口设计也很人性化,简洁、高效,望文生义。
值得称赞的是,pugiXml还支持XPath。再次感谢Arseny Kapoulkine。
4、rapidxml
没有用过,标记一下。
据说支持wchar_t,速度很快,接口和tinyXml类似
- C++,几个小巧开源xml库
- 几个C/C++的 XML解析库(包括纯C的读写查找XML文件的库,都是开源的)
- 几个C/C++的 XML解析库(包括纯C的读写查找XML文件的库,都是开源的)
- 开源实用小巧的Android引导蒙版(浮层)库
- Swift小巧库
- Nutz:小巧而实用的国产开源Java项目
- 【PHPRS】一款小巧精悍的PHP RESTful开源框架
- 几个C/C++的XML解析库(包括纯C的读写查找XML文件的库
- 用于本机 C++ 的小巧快捷的 XML 分析器
- SQLite数据库是一款非常小巧的嵌入式开源数据库软件
- [置顶].NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB
- 一个小巧简单的c++代码库
- 六款小巧的HTTP Server[C语言]
- 六款小巧的HTTP Server[C语言]
- 六款小巧的HTTP Server[C语言]
- 六款小巧的HTTP Server[C语言]【转】
- 一个小巧的C++Log输出到文件类
- 轻量级开源的ANSI C下XML解析库—Mini-XML
- dom4j 的小小测试
- 栈操作LIFO,实现12月份的圧栈和出栈
- ubuntu相关apt源的添加
- Nginx配置文件详细说明
- 辨析离线算法与在线算法
- C++,几个小巧开源xml库
- Java中的instanceof关键字
- ActionBar最近学习整理之二:风格自定义
- android笔记(一)mkyaffs2image的用法
- Nhibernate中CreateSQLQuery用法实例
- ORA-01506: missing or illegal database name
- 驱动层hook系统函数的时,如何屏蔽掉只读属性?
- 判断运行的是iPhone5及解决4inch屏黑边问题
- Ubuntu Linux系统下apt-get命令