• 【YAML】非标记语言的标记语言


    什么是YAML?

    YAML是"YAML Ain't a Markup Language"(YAML不是一种标记语言)的递归缩写

    在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言[3]

    但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。

    是一个可读性高,用来表达数据序列化的格式。

    YAML参考了其他多种语言,包括:C语言PythonPerl,并从XML、电子邮件的数据格式(RFC 2822)中获得灵感。

    Clark Evans在2001年首次发表了这种语言[1],另外Ingy döt Net与Oren Ben-Kiki也是这语言的共同设计者[2]

    当前已经有数种编程语言或脚本语言支持(或者说解析)这种语言。


    YAML能干什么用?

    YAML的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态

    语法特点:

    使用空白符号缩进和大量依赖外观

    让人最容易上手的特色是巧妙避开各种封闭符号

    适用场景:

    特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。

    尽管它比较适合用来表达层次结构式(hierarchical model)的数据结构,不过也有精致的语法可以表示关系性(relational model)的数据。[5]


    演示案例:

    数据结构可以用类似大纲的缩进方式呈现

    ---
    receipt:     Oz-Ware Purchase Invoice
    date:        2012-08-06
    customer:
        given:   Dorothy
        family:  Gale
       
    items:
        - part_no:   A4786
          descrip:   Water Bucket (Filled)
          price:     1.47
          quantity:  4
    
        - part_no:   E1628
          descrip:   High Heeled "Ruby" Slippers
          size:      8
          price:     133.7
          quantity:  1
    
    bill-to:  &id001
        street: | 
                123 Tornado Alley
                Suite 16
        city:   East Centerville
        state:  KS
    
    ship-to:  *id001   
    
    specialDelivery:  >
        Follow the Yellow Brick
        Road to the Emerald City.
        Pay no attention to the
        man behind the curtain.
    ...

    在YAML中,字符串不一定要用双引号标示。

    另外,在缩进中空白字符的数目并不是非常重要,只要相同层次结构的元素左侧对齐就可以了(不过不能使用TAB字符)。

    这个文件的顶层由七个键值组成:其中一个键值"items",是两个元素构成的数组(或称清单),

    这清单中的两个元素同时也是包含了四个键值的散列表。

    文件中重复的部分用这个方法处理:使用锚点(&)和引用(*)标签将"bill-to"散列表的内容复制到"ship-to"散列表。

    也可以在文件中加入选择性的空行,以增加可读性。

    在一个文件中,可同时包含多个文件,并用"---"分隔。

    选择性的符号"..."可以用来表示文件结尾(在利用流的通信中,这非常有用,可以在不关闭流的情况下,发送结束信号)。


    文件预览:

     YAML的文件后缀有两种:

    - file.yaml

    - file.yml

    都可以被识别为yaml文件,只不过yml是缩写的再缩写


    对比三种配置文件:

    XML设置端口号:

    <server>
        <port>8080</port>
    </server>

    Properties设置端口号:

    server.port = 8081

    YAML设置端口号:

    server:
      port: 8080

    语法 Syntax

    基本语法:

    KEY: VALUE

    KEY表示键,VALUE表示值

    要注意的是,VALUE和分号之间必须留有一个空格

      

    空格在YAML中具有特殊的意义:

      以空格来控制每一个键值对的层级关系

      以左对齐的一列数据,都是同一层级的数据

    值的写法:

      普通值【数字、字符串、布尔】

      - K:V直接书写

      - 字符串可不使用引号

      - 双引号不会转义特殊字符 如果写\n会换行

      - 单引号会转义处理 如果写\n不会换行

      

      对象【属性:值】

      - 对象的标识没有值对应

      - 属性和值是对象的下一级的多个键值对组成

      

      - 可以横向的书写

      

      数组【List、Set】

      列写法 & 行写法

      

      

  • 相关阅读:
    第二阶段个人总结八
    第二阶段个人总结七
    第二阶段个人总结六
    第二阶段个人总结五
    电梯演说模板练习
    对敏捷开发的理解
    团队的不同形式
    认识JQuery的三天--看视频得到的一些小知识点
    结对编码
    结对互评
  • 原文地址:https://www.cnblogs.com/mindzone/p/12851380.html
Copyright © 2020-2023  润新知