最近,研究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 }