最近,研究jeeweb这个框架,发现新版本中的配置文件都是用的.yml为后缀的文件,打开一看,和以前的xml和properties语法有很大区别,因此仔细研究一下。
简介:
YAML是(YAML Ain't Markup Language)(发音 /ˈjæməl/ )不是一种标记语言”的外语缩写,在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言)。这种语言以数据做为中心,它使用空白符号缩排和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种设定档、倾印除错内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。尽管它比较适合用来表达阶层式(hierarchical model)的数据结构,不过也有精致的语法可以表示关联性(relational model)的资料。
示例:
语法:
使用空格 Space 缩进表示分层,不同层次之间的缩进可以使用不同的空格数目,但是同层元素一定左对齐,即前面空格数目相同(不能使用 Tab,各个系统 Tab对应的 Space 数目可能不同,导致层次混乱)
‘#’表示注释,只能单行注释,从#开始处到行尾
破折号后面跟一个空格(a dash and space)表示列表
用冒号和空格表示键值对 key: value
简单数据(scalars,标量数据)可以不使用引号括起来,包括字符串数据。用单引号或者双引号括起来的被当作字符串数据,在单引号或双引号中使用C风格的转义字符
Sequence of Scalars 简单数据列表
1 - Mark McGwire 2 - Sammy Sosa 3 - Ken Griffey
Mapping Scalars to Scalars 简单数据键值对以及注释
1 hr: 65 # Home runs 2 avg: 0.278 # Batting average 3 rbi: 147 # Runs Batted In
Mapping Scalars to Sequences 简单数据列表键值对
1 american: 2 - Boston Red Sox 3 - Detroit Tigers 4 - New York Yankees 5 national: 6 - New York Mets 7 - Chicago Cubs 8 - Atlanta Braves
Sequence of Mappings 键值对列表
1 - 2 name: Mark McGwire 3 hr: 65 4 avg: 0.278 5 - 6 name: Sammy Sosa 7 hr: 63 8 avg: 0.288
Sequence of Sequences 列表的列表
1 - [name , hr, avg ] 2 - [Mark McGwire, 65, 0.278] 3 - [Sammy Sosa , 63, 0.288]
Mapping of Mappings 键值对的键值对
1 Mark McGwire: {hr: 65, avg: 0.278} 2 Sammy Sosa: { 3 hr: 63, 4 avg: 0.288 5 }