天天看点

YAML语法,yml文件语法

YAML(/ˈjæməl/,尾音类似 camel 骆驼)是一个可读性高,用来表达数据序列化的格式。YAML 参考了其他多种语言,包括: C 语言、 Python、Perl,并从 XML、电子邮件的数据格式(RFC 2822)中获得灵感。Clark Evans 在 2001 年首次发表了这种语言 ,另外 Ingy döt Net 与 Oren Ben-Kiki 也是这语言的共同设计者 。当前已经有数种编程语言或脚本语言支持(或者说解析)这种语言。

YAML 是 "YAML Ain't a Markup Language"(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时, YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言,但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。

功能

YAML 的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。 它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式和 YAML 非常接近)。尽管它比较适合用来表达层次结构式(hierarchical model)的数据结构,不过也有精致的语法可以表示关系性(relational model)的数据。由于 YAML 使用空白字符和分行来分隔数据,使得它特别适合用 grep/Python/Perl/Ruby 操作。其让人最容易上手的特色是巧妙避开各种封闭符号,如:引号、各种括号等,这些符号在嵌套结构时会变得复杂而难以辨认。

基本用法

environments:
dev:
url: http://dev.bar.com
name: Developer Setup
prod:
url: http://foo.bar.com
name: My Cool App           
name: My Cool App
           

等同于以下properties配置:

environments.dev.url=http://dev.bar.com
environments.dev.name=Developer Setup
environments.prod.url=http://foo.bar.com
environments.prod.name=My Cool App           

list

my:
 servers:
   - dev.bar.com
   - foo.bar.com           
my.servers[0]=dev.bar.com
my.servers[1]=foo.bar.com
           

map

bean.strstrmap[key1]: value1
bean.strstrmap[key2]: value2

bean.strobjmap[key2]:
  value2Prop1: xxx
  value2Prop2: yyy           

注释 

#comment           

--- 表示一个文档的开始

server:
    address: 192.168.1.2
---
spring:
    profiles: dev
    server:
        address: 127.0.0.1
---
spring:
    profiles: stg
    server:
        address: 192.168.1.3