前言:YAML(/ˈjæməl/,尾音类似 camel ) 是"YAML不是一种标记语言"的外语缩写 (见前方参考资料原文内容);但为了强调这种语言以数据做为中心,而不是以置标语言为重点,而用返璞词重新命名。它是一种直观的能够被电脑识别的数据序列化格式,是一个可读性高并且容易被人类阅读,容易和脚本语言交互,用来表达资料序列的编程语言
它是类似于标准通用标记语言的子集XML的数据描述语言,语法比XML简单很多
一、YAML概述
- Kubernetes支持YAML和JSON格式创建资源对象
- JSON格式用于接口之间消息的传递
- YAML格式用于配置和管理
- YAML是一种简洁的非标记性语言
1.诞生
-
YAML参考了其他多种语言,包括:XML、C语言、Python、Perl以及电子邮件格式RFC2822
-
Clark Evans在2001年5月在首次发表了这种语言,另外Ingy döt Net与Oren Ben-Kiki也是这语言的共同设计者
2.命名
-
YAML是"YAML Ain’t a Markup Language"(YAML不是一种置标语言)的递归缩写
-
在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种置标语言)
3.功能
-
YAML的语法和其他高阶语言类似,并且可以简单表达清单、散列表,标量等资料形态
-
它使用空白符号缩排和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种设定档、倾印除错内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)
-
尽管它比较适合用来表达阶层式(hierarchical model)的数据结构,不过也有精致的语法可以表示关联性(relational model)的资料
-
由于YAML使用空白字符和分行来分隔资料,使得它他特别适合用grep、Python、Perl、Ruby操作
-
其让人最容易上手的特色是巧妙避开各种封闭符号,如:引号、各种括号等,这些符号在嵌套结构中会变得复杂而难以辨认
4.格式
- 多行缩进
-
数据结构可以用类似大纲的缩排方式呈现,结构通过缩进来表示,连续的项目通过减号"-“来表示,map结构里面的key/value对用冒号”:"来分隔
-
注意:
- 字串不一定要用双引号标识
- 在缩排中空白字符的数目并不是非常重要,只要相同阶层的元素左侧对齐就可以了(不过不能使用TAB字符)
- 允许在文件中加入选择性的空行,以增加可读性
- 在一个档案中,可同时包含多个文件,并用"–"分隔
- 选择性的符号"…"可以用来表示档案结尾(在利用串流的通讯中,这非常有用,可以在不关闭串流的情况下,发送结束讯号)
-
- 单行缩写
- YAML也有用来描述好几行相同结构的数据的缩写语法,数组用’[]‘包括起来,hash用’{}'来包括
语法格式:
缩进标识层级关系
不支持制表符缩进,使用空格缩进
通常开头缩进两个空格
字符后缩进一个空格,如冒号,逗号等
“---”表示YAML格式,一个文件的开始
“#”表示注释
5.适用场景
-
脚本语言
- 由于实现简单,解析