现在的位置: 首页 > 综合 > 正文

应用程序——INI和XML配置文件

2013年08月03日 ⁄ 综合 ⁄ 共 1866字 ⁄ 字号 评论关闭

INI配置文件的格式

 

 为什么要用INI文件?如果我们程序没有任何配置文件时,这样的程序对外是全封闭的,一旦程序需要修改一些参数必须要修改程序代码本身并重新编译,这样很不好,所以要用配置文件,让程序出厂后还能根据需要进行必要的配置;配置文件有很多如INI配置文件,XML配置文件,还有就是可以使用系统注册表等。

本文主要是为读者在实现读写INI配置文件模块之前,提供有关INI文件的格式信息。

在早期的windows桌面系统中主要是用INI文件作为系统的配置文件,从win95以后开始转向使用注册表,但是还有很多系统配置是使用INI文件的。其实INI文件就是简单的text文件,只不过这种txt文件要遵循一定的INI文件格式。现在的WINCE系统上也常常用INI文件作为配置文件,这次研究INI文件的目的就是为了我的GPS定位系统客户端写个系统配置文件。“.INI ”就是英文 “initialization”的头三个字母的缩写;当然INI file的后缀名也不一定是".ini"也可以是".cfg",".conf ”或者是".txt"。

 

INI文件的格式很简单,最基本的三个要素是:parameters,sections和comments。

什么是parameters?

INI所包含的最基本的“元素”就是parameter;每一个parameter都有一个name和一个value,name和value是由等号“=”隔开。name在等号的左边。

如:

name = value

什么是sections ?

所有的parameters都是以sections为单位结合在一起的。所有的section名称都是独占一行,并且sections名字都被方括号包围着([ and ])。在section声明后的所有parameters都是属于该section。对于一个section没有明显的结束标志符,一个section的开始就是上一个section的结束,或者是end of the file。Sections一般情况下不能被nested,当然特殊情况下也可以实现sections的嵌套。

section如下所示:

[section]

 

什么是comments ?

在INI文件中注释语句是以分号“;”开始的。所有的所有的注释语句不管多长都是独占一行直到结束的。在分号和行结束符之间的所有内容都是被忽略的。

注释实例如下:

;comments text

 

当然,上面讲的都是最经典的INI文件格式,随着使用的需求INI文件的格式也出现了很多变种;

INI实例:

; last modified 1 April 2001 by John Doe
[owner]
name=John Doe
organization=Acme Products
 
[database]
server=192.0.2.42     ; use IP address in case network name resolution is not working
port=143
file = "acme payroll.dat"
本文转载自:http://blog.163.com/lyzaily@126/blog/static/42438837200911901541762/
另另外也可以参考下面wiki中的描述:http://en.wikipedia.org/wiki/INI_file
另外,很多应用程序也使用XML作为配置文件,下面是我收集到的几篇不错的文章:
Linux下一个xml库,libxml2,我以前也用过这个库:http://blog.163.com/xs_fantasy/blog/static/101560871201099102157667/?fromdm&fromSearch&isFromSearchEngine=yes
C++中使用XML配置文件的讲解:http://blog.163.com/lyz_sea/blog/static/11558670720101029799733/
TinyXML:一个优秀的C++ XML解析器 :http://dingchaoqun12.blog.163.com/blog/static/116062504201022411023779/?fromdm&fromSearch&isFromSearchEngine=yes
http://zxs19840808.blog.163.com/blog/static/119453558201063103150418/?fromdm&fromSearch&isFromSearchEngine=yes

抱歉!评论已关闭.