使用 rapidxml 做配置文件

论坛 期权论坛 脚本     
匿名技术用户   2021-1-7 02:42   11   0

对于配置文件,一般会选用ini,xml 等等的配置格式。如何快速高效的从文件内读取自己想要的信息是每个做配置文件想要达到的效果。对以小型开发我们并不用时用到msxml这种重量级的解析器。那样会给自己添麻烦的。这里我推荐大家使用rapidxml

之前使用tinyxml 感觉还可以。后看了rapidxml 就想换用这个开源库。经常编写跨平台软件省去编译和加载lib。4个文件实现解析xml而且超高效官网还拿他跟strlen比较速度牛X吧看看下面的表。

其他废话我就不多讲。其实之前也有人介绍这个库怎么使用。这里我就给几个链接。

燕良博客:http://blog.csdn.net/Neil3D/archive/2010/03/11/5369173.aspx

官网:http://rapidxml.sourceforge.net/

如果不懂xml的概念的朋友自己到网上找下相关的教程学习下。这里我简单的介绍下各个文件的作用:自己留个底怕以后自己会忘。

库可以配置宏:

RAPIDXML_NO_EXCEPTIONS //不使用异常

RAPIDXML_STATIC_POOL_SIZE //内存池大小默认(64 * 1024)

一般都不用改

rapidxml.hpp

只要文件 实现内存池 解析string 异常处理

xml_base 基数节点类

xml_attribute 文本类

xml_node 节点类

xml_document 文档类

rapidxml_iterators.hpp

提供两个迭代器类:node_iterator attribute_iterator

rapidxml_print.hpp

提供跟字符串,流对象的装换函数

rapidxml_utils.hpp

提供一个file用来读取文件使用

跟两个计数函数 count_childrencount_attributes

节点类型源码讲的很清楚

简单操作:

运行结果:

读取文件(这里是从其他拷过来我刚学的时候就保存下来了,忘了在那里考的网上有好几个位兄弟都有的感觉,我也借来用用):

基本的步骤为
首先获取xml文件数据
然后分析数据
获取节点
获取属性
获取名字
获取值
...

代码如下:

需要说明的是rapidxml明显有一个bug
那就是append_node(doc.allocate_node(node_element,"h","0"));的时候并不考虑该对象是否存在!

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP