美文网首页
YAML应用

YAML应用

作者: guru200 | 来源:发表于2015-10-20 15:54 被阅读2323次

YAML 的定义是:“YAML Ain ’ t a Markup Language”,或者“Yet Another Markup Language”。

特点

  • YAML 的数据组织主要依靠的是空白,缩进,分行等结构,可读性好。
  • YAML 实现简单,解析成本很低,和脚本语言的交互性好。
  • YAML 很容易就可以插入另一个 YAML 文件,甚至其他类型的文件,包括 XML, SDL, JSON 等。
  • YAML 使用实现语言的数据类型。
  • YAML 可以基于流来处理;
  • YAML 表达能力强,扩展性好。

说明

YAML百度百科
YAML官网

基础

  • 使用空白字符(不能使用Tab)分层,同层元素左侧对齐;
  • 用“-”来表示一些序列的项(Sequence);
  • 用“:”来表示一对项目(Map)里的栏目(Key)和其相应的值(Value);
  • 单行注解由“#”字号开始,可以出现在行中任何位置;
  • 字符串一般不使用引号,但必要的时候可以用引号框住;
  • YAML也有用来描述好几行相同结构的数据的缩写语法,数组用“[]”包括起来,hash用“{}”来包括。

其它

  • YAML使用可打印的Unicode字符,可使用UTF-8或UTF-16
  • 使用双引号表示字串时,可用倒斜线(\)进行特殊字符转义
  • 区块的字串用缩排和修饰词(非必要)来和其他资料分隔,有新行保留(使用符号<kbd>|</kbd>)或新行折叠(使用符号<kbd>></kbd>)两种方式
  • 在单一档案中,可用连续三个连字号(---)区分多个档案
  • 可选择性的连续三个点号(...)用来表示档案结尾(在流式传输时非常有用,不需要关闭流即可知道到达结尾处)
  • 重复的内容可使从参考标记星号 (*)复制到锚点标记(&)
  • 指定格式可以使用两个惊叹号 ( !! ),后面接上名称
  • 允许在文件中加入选择性的空行,以增加可读性
  • 在缩排中空白字符的数目并不是非常重要,只要相同阶层的元素左侧对齐就可以了

实例

简单实例

John.yaml

name: John Smith
age: 37
spouse:
    name: Jane Smith
    age: 25
children:
    -  name: Jimmy Smith
       age: 15
    -  name: Jenny Smith
       age: 12

John今年37岁,有一个幸福的四口之家。两个孩子Jimmy 和Jenny活泼可爱。妻子Jane年轻美貌。
也可缩写为:

name: John Smith
age: 37
spouse: {name: Jane Smith, age: 25}
children: [{name: Jimmy Smith, age: 15}, {name: Jenny Smith, age: 12}]

用 YAML 表达的一个购物发票

  --- !clarkevans.com/^invoice 
  invoice: 34843 
  date : 2001-01-23 
  bill-to: &id001 
    given : Chris 
    family : Dumars 
    address: 
    lines: | 
    458 Walkman Dr. 
    Suite #292 
    city : Royal Oak 
    state : MI 
    postal : 48046 
  ship-to: *id001 
  product: 
    - sku : BL394D 
    quantity : 4 
    description : Basketball 
    price : 450.00 
    - sku : BL4438H 
    quantity : 1 
    description : Super Hoop 
    price : 2392.00 
  tax : 251.42 
  total: 4443.52 
  comments: > 
    Late afternoon is best. 
    Backup contact is Nancy 
    Billsmer @ 338-4338.

比较

JSON

JSON的语法是YAML1.2版的子集,同时非常接近YAML1.0与1.1版的子集,因此大部分的JSON文件都可以被YAML的剖析器剖析。这是因为JSON的语法结构和YAML的内置格式相同。虽然大范围的分层也可以使用类似JSON的内置格式,不过YAML标准并不建议这样使用,除非这样编写能让文件可读性增加。YAML的许多扩展在JSON是找不到的,如:进阶资料形态、关系锚点、字串不需要双引号、映射资料形态会储存键值的顺序

XML

相关文章

网友评论

      本文标题:YAML应用

      本文链接:https://www.haomeiwen.com/subject/vucvqttx.html