放弃XML做为配置文件,转投Yaml怀抱
Yaml -- yaml ain't markup language,又是一个这样风格的命名,它的出发点就是为了作为使用者的人来说,更加易读好写,支持层级结构,所以从理论上来说,是可以代替XML的
对yaml支持最好的当然就是ruby了,因为ruby配置都采用yaml格式,同时也会做为对象的序列化存储来使用,因为我C#和Java都准备采用Yaml代替XML做为我的配置文件格式使用(也就是说我不用它去代替web.config或app.config的,毕竟.net中相应的handle去处理,可以直接存取使用,不需要我去用xpath来查找定位xml节点),Java有jyaml和jvyaml,试了一下jyaml,想来大概够用,而C#的就是Yaml.net,晕,发现不支持从对象到yaml的dump以及从yaml中load一个对象实例,我发邮件给两位作者,问是否有计划去做这个,结果他们说对于Yaml.net已经没兴趣了,因为官方的 Specification?变得越来越复杂,现在他们已经放弃Yaml而使用XML了
一个半成品的轮子放在面前,怎么办呢,基于他们的改还是自己另外写?由于他们说这个Yaml.net本身对yaml支持特性不完全,而不仅仅是序列化和反序列化的问题了,我于是决定自己重新写一个parser,在写的过程中,为了让我的配置文件更容易书写以及更直观,我开始更改了一些语法要求,因为.Net中泛型存在,所以我不需要在yaml中对类型加tag来标识,而且我的paser在组装对象时完全可以通过泛型来判定List和Dictionary里存储的对象来是简单类型还是自定义类型,这意味着我这是一个改头换面了的Yaml,况且由于时间不允许,我只有一天时间来完成它,结果最后它支持的特征有:
1、单行注释,使用'#'
2、简单类型,包括string,int,float,double,datetime,bool
3、集合支持,必须使用泛型,支持list和dictionary
4、引用和继承
评论Feed: /feed.asp?q=comment&id=715

