将expat替换为libxml

我们维护的项目代码量不大,冗余度倒是不低,光是XML parser就有expat,tinyxml,libxml以及一个自己(其实好像是另一个第三方库自带的)手写的parser。我观察了一下,觉得可以把expat和tinyxml都替换为libxml,这段时间就在做这项工作。

好在之前的人在expat之外做了一层封装,ExpatWrapper,所以只要修改ExpatWrapper就可以了,不过倒也折腾了不少时间。这个封装在Windows上是编译成一个独立的dll,导出符号跟内部使用的XML parser没有任何关系,总的说来封装效果不错。

  1. 用了libxml的SAX接口,最常用部分跟expat差别不大,提供回调函数即可,回调函数的签名也跟expat的极其相似。
  2. libxml有字符串和文件的解析API,对于大段的字符串也可以分chunk进行解析,相当方便。
  3. libxml貌似只有char接口,expat貌似可以根据宏定义UNICODE来使用wchar_t或char的签名接口。

本文地址:

https://minidump.info/blog/2017/12/replace-expat-with-libxml/

上一篇

抓取网络小说到Kindle

前些天突然心血来潮,写了个小程序,用于从网上抓取网络小说,然后生成content.html,content.opf和toc.ncx文件,再放入一个合适的字体文件,比如经过我几番比较,在我的Kindle4上使用方正准圆比较好,最后用kindlegen生成mobi文件,于是可以使用kindle来阅...…

Shareware 全文阅读
下一篇

2018新年好

2017年完成了人生中的一件大事。其他的就混过去了。昨天厨房里水桶里的水满出来了,漫得满地都是,妹子说发水是大发,新年第一天就发,今年要发啦!晚上吃饭时又一不小心把妹子的饭碗给撞到地上摔碎了,阿姨就说碎碎平安。希望2018年会是个好年。2018年一定要挖一口井。…

Life 全文阅读