YAML 简介:
YAML,即 YAML Ain’t a Markup Language(YAML 不是一种标记语言)的递归缩写。YAML 其实意思是 Yet Another Markup Language(仍是一种标记语言)。它主要强度这种语言是以数据为中心,而不是以标记为中心,而像 XML 语言就使用了大量的标记。
YAML 可读性高,易于理解,用来表达数据序列化的格式。它的语法和其他高级语言类似,还可以简单表达数组、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件。
1.YAML使用可打印的Unicode字符,可使用UTF-8或UTF-16
2.使用空白字符(不能使用Tab)分层,同层元素左侧对齐
3.单行注解由井字号( # )开始,可以出现在行中任何位置
4.每个清单成员以单行表示,并用短杠+空白(- )起始
5.每个杂凑表的成员用冒号+空白(: )分开键和值
6.杂凑表的键值可以用问号 (?)起始,表示多个词汇组成的键值
7.字串一般不使用引号,但必要的时候可以用引号框住
8.使用双引号表示字串时,可用倒斜线(\)进行特殊字符转义
9.区块的字串用缩排和修饰词(非必要)来和其他资料分隔,有新行保留(使用符号|)或新行折叠(使用符号>)两种方式
10.在单一档案中,可用连续三个连字号(---)区分多个档案
11.可选择性的连续三个点号(...)用来表示档案结尾(在流式传输时非常 有用,不需要关闭流即可知道到达结尾处)
12.重复的内容可使从参考标记星号 (*)复制到锚点标记(&)
13.指定格式可以使用两个惊叹号 ( !! ),后面接上名称
# 客户订单
date: 2015-02-01
customer:
- name: Jai
items:
- no: 1234 # 订单号
- descript: cpu
--- # 文档开始
- 第一章 简介
- 第二章 设计目录
--- # 文档开始
[blue, red, green]
--- # 文档开始
- [blue, red, green] # 列表项本身也是一个列表
- [Age, Bag]
- site: {osc:www.oschina.net, baidu: www.baidu.com} # 这里是同 键值表 组合表示
# 客户订单
date: 2015-02-01
customer:
- name: Jai
items:
- no: 1234 # 订单号
- descript: cpu
- price: ¥800.00
# 客户订单
date: 2015-02-01
customer:
- name: Jai
items: {no: 1234, descript: cpu, price: ¥800.00}
# 使用一个列表作为键
? [blue, reg, green]: Color
# 等价于
? - blue
- reg
- gree
: Color
Color:
- blue
- red
- green
# 相当于 (也是 JSON 的表示)
{Color: [blue, red, green]}
div:
- border: {color: red, width: 2px}
- background: {color: green}
- padding: [0, 10px, 0, 10px]
# 使用缩进表示的键值表与列表项
items:
- item: cpu
model: i3
price: ¥800.00
- item: HD
model: WD
price: ¥450.00
# 上面使用 “-” 前导与缩进来表示多个列表项,相当于下面的JSON表示
items: [{item:cpu, model:i3, price:¥800.00}, {item:HD, model:WD, price: ¥450.00}]