YAML配置文件

  最近,研究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 }
posted @ 2019-01-03 16:19  光何  阅读(2738)  评论(0编辑  收藏  举报