`

yaml简介

 
阅读更多

1,介绍

  YAML是一种标记语言, 全称是Ain't Markup Language。

  YAML是一个可读性高的用来表达资料序列的格式。YAML参考了其他多种语言包括XML、C语言、Python、Perl以及电子邮件格式RFC2822等。Clark Evans在2001年在首次发表了这种语言另外Ingy dtNet与Oren Ben-Kiki也是这语言的共同设计者。 

 

2,特点

   YAML的可读性好 

   YAML和脚本语言的交互性好 

   YAML使用实现语言的数据类型 

   YAML有一个一致的信息模型 

   YAML易于实现 

   YAML可以基于流来处理 

   YAML表达能力强扩展性好

 

3,语法

 1)规则

   缩进yaml使用一个固定的缩进风格表示数据层结构关系,Saltstack需要每个缩进级别由两个空格组成。 一定不能使用tab键

       冒号: 每个冒号后面一定要有一个空格(以冒号结尾不需要空格,表示文件路径的模版可以不需要空格)

       短横线:想要表示列表项,使用一个短横杠加一个空格。多个项使用同样的缩进级别作为同一个列表的一部分

 

       注意事项

      1),如果参数是以空格开始或结束的字符串,应使用单引号把他包进来。如果一个字符串参数包含特殊字符,也要用单引号包起来。

    e.g.

  1. bat:  
  2.  website:{  baidu: '    http://www.bai''u.com'}  

  2), 当字符串较长时,可以使用特殊字符头外加一个缩进表示长字符串,可以换行

  3),在yaml里,用on、1、true来表示true,off、0、false来表示false   

  4), 在yaml里,用#做注释

  5),  如果你在yaml文件中看到了.开头的字符串,这个字符串代表的是分类头

    e.g.

           

  1. all:  
  2.  .general:  
  3.   tax: 19.6  
  4.   
  5.  mail:  
  6.   webmaster: webmaster@example.com  

     

4,一些示例

# > 的作用,以缩进对齐来判断是否为一段文字,也就是说,一旦缩进与上一行不一致,则认为是一个新行。

# node1的例子中,第一行“Ther... door”,

#                第二行“  "Please... floor"”,

#                第三行“So...So2”

node1: >

  Ther once was a man from Darjeeling

  Who got on a bus bound for Ealing

  It said on the door

    "Please don't spit on the floor"

  So he carefully spat on the ceiling

  So2

 

# | 的作用,它表示之后的文字,每一行均为一个新行

node2: |

  Ther once was a man from Darjeeling

  Who got on a bus bound for Ealing

  It said on the door

  "Please don't spit on the floor"

  So he carefully spat on the ceiling

 

# & 的作用,它表示一个“锚点标记”,其它节点可以使用“*”或“<<: *”来引用它的值

node3: &node3

  a: 001

  b: 002

 

# * 的作用,指node4的内容与node3完全一致

node4:

  *node3

  

# <<: * 的作用,指node5的内容包含但不完全相同于node3的值

node5:

  <<: *node3

  c: 003

 

# !! 的作用,强迫转换类型。

#输出:

#{"node6"=>{

#    "a"=>#<YAML::PrivateType:0x9df6d40 @value="123", @type_id="float">,

#    "b"=>#<YAML::PrivateType:0x9df6ae8 @value="true", @type_id="str">,

#    "c"=>true

#}

#注意:c的值为布尔型。

node6:

  a: !!float 123

  b: !!str true

  c: True

 

# 二进制内容的表示

node7: !!binary |

  xxxxxxxxxxxxx

  xxxxxxxxx

  xxxxx

 

node8_value: &node8_value {id: 10000, code: item_manager, name: 项目经理}

 

#自定解析类型,YAML某Key的Value一般为Array或Hash,但如果需要将Value解析为其它的自定义类型,可以使用该方法。

#步骤:

# 1、首先定义 MyCustClass 类,如:

#    class MyCustClass

#      attr_accessor :id

#      attr_accessor :code

#      def initialize v_hash

#        @id = v_hash["id"]

#        @code = v_hash["code"]

#      end

#    end

# 2、向YAML注册解释类型,如:

#  YAML::add_domain_type("yaml.org,2002", 'MyCustClass') do |type, val|

#    MyCustClass.new(val)

#  end

# 3、OK,当YAML文件加载时,YAML将自动将“node8”的值解析为MyCustClass类型。

# 4、测试一下,x["node8"] >> #<MyCustClass:0x9df1c88 @code="item_manager", @id=10000>

#              x["node8"].code >> "item_manager"

node8: !MyCustClass 

  <<: *node8_value

 

# ? 的作用,用来明确的表示多个词汇组成的键值

# a["node9"] => {{"a"=>1, "b"=>2}=>[1, 2], "c"=>3}

node9:

  ? {a: 01, b: 02}

  : [1, 2]

 

  c: 3

 

5, 参考

http://www.yaml.org/

http://blog.chinaunix.net/uid-22776959-id-5749385.html

http://www.cnblogs.com/moonandstar08/p/6435640.html

语法跟用法可参考: http://sqycyl.iteye.com/blog/859589

 

分享到:
评论

相关推荐

    MatLab的YAML库文件

    1. **YAML简介** YAML 是一种易读易写的标记语言,设计用于人类可读性,同时也适合机器解析。它通过简洁的语法来表示数据结构,如列表、字典(哈希表或关联数组)和基本类型(字符串、数字等)。YAML文件通常以`....

    pengbotao#itopic.go#Yaml简介1

    2.1 字符串 2.2 布尔值 2.3 整数 2.4 浮点数 2.5 空 2.6 日期 3.1 对象 3.2 数组 3.3 复合结构

    Python集中化管理平台Ansible介绍与YAML简介

    ### YAML简介 #### 一、YAML语言概览 YAML (YAML Ain’t Markup Language) 是一种用于人类可读的数据序列化的格式,常用于配置文件中。其特点包括: - **简洁性**:易于编写和阅读。 - **灵活性**:支持复杂的数据...

    yaml-cpp开源库

    ### YAML简介 YAML(YAML Ain't Markup Language)是一种简洁的人类可读的数据序列化语言,常用于配置文件和数据交换。与XML或JSON相比,YAML的语法更加简洁,更便于快速阅读和编写。例如,以下是一个简单的YAML...

    基于Java的YAML解析器 SnakeYAML.zip

    YAML简介 YAML是一种人可读性强的标记语言,其设计目标是提高人类可读性和编写效率。它的主要特点包括: - 使用缩进表示层级关系,而非XML的标签。 - 支持多种数据类型,如字符串、数字、布尔值、数组、映射等。 ...

    【SpringBoot】YAML 配置文件.doc

    一、YAML 简介 YAML(YAML Ain’t Markup Language)是一种数据序列化格式,近些年逐渐进入市场,并开始占据主导地位。YAML 配置文件的优点在于易于阅读,结构清晰,易于与脚本语言交互,以数据为核心,重数据轻...

    前端开源库-remark-parse-yaml

    ### YAML简介 YAML(YAML Ain't Markup Language)是一种简洁且直观的数据序列化语言,常用于配置文件和数据交换。它的语法清晰,易于阅读,支持嵌套结构和类型表示,如字符串、数字、布尔值、数组和对象等。在...

    PyYAML-3.12.tar.gz

    YAML简介** YAML,全称“YAML Ain't Markup Language”,并非传统的标记语言,而是设计用来作为数据序列化的语言。它的设计目标是简洁、易读、易于编写,并且适合机器处理。YAML的语法简洁明了,通过缩进表示层级...

    springboot 的配置文件加载顺序

    springboot 的配置文件加载顺序 ... 本系列校训 用免费公开视频,卷飞培训班哈人!...YAML 简介 YAML 对象、数组、List、Map、Set的行内写法与缩进写法 YAML 位置 第一个位置 第二个位置 其它位置

    Python库 | yamkix-0.7.0.tar.gz

    **YAML简介** YAML是一种人可读的标记语言,其设计目标是使数据在人类和机器之间易于读写。它支持多种数据结构,如列表、字典(映射)和标量值。YAML的语法简洁,例如,用冒号分隔键和值,用缩进表示层次关系。 **...

    PyPI 官网下载 | oyaml-0.9-py2.py3-none-any.whl

    ** YAML简介 ** YAML是一种人可读的、灵活的数据序列化格式,它的设计目标是成为人类易读易写的配置文件标准。YAML支持多种数据结构,如字符串、数字、布尔值、列表、字典等,并且通过特定的缩进规则来表示层次关系...

    PyYAML-3.10.tar

    ### YAML简介 YAML,全称“YAML Ain't Markup Language”,设计目标是提供一种比XML更简洁、更直观的数据序列化格式。YAML的语法简洁明了,易于人类阅读和编写,同时也方便机器解析和生成。它的主要特性包括: 1. ...

    yayaml:另一个使用ANTLR的YAML库

    ### YAML 简介 YAML (YAML Ain't Markup Language) 是一种数据序列化格式,常用于配置文件、数据交换和文档存储等场景。YAML 的设计目标是让人类可读性更强,同时保持机器的易解析性。其语法简洁明了,通过键值对、...

    yml详解以及java对yml的使用

    #### 一、YAML简介 YAML (Yet Another Markup Language) 是一种人类可读的数据序列化格式。它旨在提供清晰且易于理解的数据表示方式,通常用于配置文件中。 #### 二、基本语法规则 1. **大小写敏感**:YAML区分大...

    解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题

    ##### YAML简介 - **定义**:YAML(YAML Ain't Markup Language)是一种简洁的非标记语言,用于人类可读的数据序列化。 - **特点**: - 数据为中心,使用空白、缩进和分行来组织数据。 - 易于阅读和编写。 - 支持...

    configYaml:基于YAML的Java配置管理器

    **YAML简介** YAML是一种人可读性极高的数据序列化格式,广泛用于配置文件、数据交换等领域。它的语法简洁明了,支持层次结构,使得配置文件易于理解和编辑。比如,以下是一个简单的YAML配置示例: ```yaml ...

    Kubernetes ingress yaml文件包

    **一、Kubernetes Ingress简介** Kubernetes Ingress是集群中对外暴露服务的一种标准方式,它允许你定义基于HTTP/HTTPS的路由规则,可以将外部流量根据不同的路径、主机名或端口转发到内部的Service。Ingress并不...

Global site tag (gtag.js) - Google Analytics