xml文件读写总结

前一段时间参与了一个项目,要用到xml文件的读写,可是自己原来就没有用过xml文件,怎么读写,用设么读写,一时间脑子混乱,不知道该怎么办,随后经过别人的指导,在网上找了一些开源的库,慢慢的一个库一个库的试用

tinyxml:这个库是第一次试用的开源库,都可以在网上下载到,关于这个库的使用方法,网上有很多博客写到了,我就不在这里赘述了,源码下载网站:http://www.grinninglizard.com/tinyxml/ ,关于xml文件的解析,我也是看了别人写的博客知道的,具体参考地址:http://blog.csdn.net/weiqubo/article/details/6913260 ,其实读写很简单,就总结自己遇到的问题吧,因为本人所参与的这个项目是涉及到的xml文件非常大上百兆或好几个GB,所以就需要主要考虑内存,速度。tinyxml封装的很好,面向对象性比较强,最大的问题就是这个库不能读取上百兆的文件,至于具体是大于多少兆不能读取,具体没有测试,用了20mb的xml文件,可以正常读取,但是非常慢,得要十分钟左右才能遍历完。。用150mb的xml文件测试的时候就不能读取了。所以当我把我需要的功能都封装好后,再用他测试的时候是多么的悲催,得重新选择库,重新写代码。

总结:在使用一个开源库的时候,当你不确定你所需要的功能他是否可以达到的时候,先不要着急的去实现功能,不要着急的了解这个库的功能,先做好各个模块的设计,专门测试一下自己用的这个库,当这个库在内存,速度,等各个重要的方面能达到自己的要求的时候再去使用这个库,这样就减少了不少的产能。

cmarkup:这个库用起来没什么问题,就是不是很方便,封装的不是很好,如果要读取比较小的xml文件的话,还是推荐用tinyxml,而且速度不如rapidxml快,这个库可以读取150mb的xml文件,再大的xml没有测过,也不确定是否能使用

rapidxml:速度比较快,可以读取150mb左右的xml文件,用起来还行,不过还是没有tinyxml好用

读取xml文件过程中没有涉及到xml文件的编码问题,内存都差不多,就是最终测的rapidxml的虚度的确很快。其实对于xml文件的读取方式都差不多,只要会用一个库了,就差不多都会用了,只是开源库封装的方法不一样,接口不一样。

数据的存储:在读取xml文件后,将读取的xml文件数据起初是用map存储,最后感觉map比较慢,就改用了hash_map,但是我用的vc6没有hash_map,于是改用vs2005;之前的map用的是以CString为关键字的,这个在hashmap中行不通,hashmap不支持CString,这是上网查了才知道的,浪费了很多时间,又将CString改为string。

发版:临近发办的时候我还在用debug版本跑,可是150mb的数据要用差不多两个半小时才能跑完,之后别人说用release版本跑一下试试,用release版本一跑,用了10分钟左右,真是大吃一惊,虽然之前也知道发版是发的release版本,但是自己从来没有测试过debug版本与release版本的效率对比,可鉴release版本是优化了很多,但是至于都优化了设么,还是需要自己跑慢慢学习,研究...

学习中。。。

阅读更多
个人分类: 工作
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭