zoukankan      html  css  js  c++  java
  • XML刚学会,怎么又出来个YAML!

    XML(eXtensible Markup Language)可扩展标记语言,曾经是IT软件开发界,标记数据、定义数据的大哥大。

        很多从事Spring的同学,没少花时间在写XML文件上吧?

        不过随着时间推移,XML的大哥大地位越来愈多收到了挑战。

        这不,除了JSON,又冒出来一个YAML。到底YAML是个怎么回事?看看下面的文章,小伙伴们就明白了。

    YAML(/ˈjæməl/,尾音类似camel骆驼)是一个可读性高,用来表达数据序列化的格式。

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

    Clark Evans(某软件行业大牛)在2001年首次发表了这种语言。当前已经有数种编程语言或脚本语言支持(或者说解析)这种语言。

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

    YAML使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。

    来看个YAML的例子John.yaml:

    name: John Smith

    age: 35

    Wife:

       name: Jane Smith

       age: 33

    children:

       -   name: Kate Smith

           age: 10

       -   name: Daniel Smith

           age 8

    是不是很好理解?

    一个人叫John Smith,35了(他居然35了?!他在哪里工作吖?)他夫人叫Jane Smith,比他小两岁。

    John俩孩子,10岁的女儿和8岁的儿子。

    即使不懂开发的人,是不是也能一眼看懂?!

    目前,市面上常见的开发语言:JAVA、Python、Golang、PHP、C/C++都支持YAML。

    YAML灰常适合用来表达层次结构式(hierarchical model)的数据结构,而且还有精致的语法可以表示关系性(relational model)的数据。

    上面的例子,也能看出YAML的一个显著特点:多行缩进

    数据结构可以用类似大纲的缩排方式呈现,结构通过缩进来表示,连续的项目通过减号“-”来表示,map结构里面的key/value对用冒号“:”来分隔。

    下面简单从研发角度描述一下YAML

    1.YAML语法

    • 大小写敏感

    • 使用缩进表示层级关系

    • 缩进时不允许使用Tab键,只允许使用空格。

    • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

    2.支持的基本数据结构

    • 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)

    • 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)

    • 纯量(scalars):单个的、不可再分的值

    2.1 对象:

    YAML对象,是一组键值对,使用冒号结构表示。

    例如:Name:John

    Yaml 也允许另一种写法,将所有键值对写成一个行内对象。

    例如:Person: { FirstName: John, LastName: Does}

    2.2 数组:

    YAML中,一组连词线开头的行,构成一个数组。

    例如:

    - John

    - Richard

    - Steve

    YAML中,数据结构的子成员是一个数组,则可以在该项下面缩进一个空格。

    例如:

    -

     - John

     - Richard

     - Steve

    YAML的数组也可以采用行内表示法。

    例如:people: [John, Richard]

    2.3 纯量:

    YAML中纯量是最基本的、不可再分的值。以下数据类型都属于 JavaScript 的纯量。

    • 字符串

    • 布尔值

    • 整数

    • 浮点数

    • Null

    • 时间

    • 日期

    3.不得不说的字符串

    字符串是各种开发语言里最常见,也是比较复杂的一种数据类型。

    YAML中,字符串默认不使用引号表示。

    例如:Name:JohnDoe

        复杂点儿的,YAML字符串可以写成多行,从第二行开始,必须有一个单空格缩进。换行符会被转为空格。

    例如:

    introduction: John

     Doe

     Chinese

    转换成JavaScript,变这样:

    { introduction: 'John Doe Chinese' }

    再复杂点儿的,YAML中多行字符串可以使用 | 保留换行符,也可以使用 > 折叠换行。

    例如:

    husband: |

     John

     Smith

    wife: >

     Jenny

     Smith

    转为 JavaScript 代码如下。

    { this: 'John Smith ', that: 'Jenny Smith ' }

        多数情况下:以上内容应付日常工作、面试足够了。

    以下内容供学有余力的同学参考:

    4.一个高级用法

    YAML中,锚点 & 和别名 * ,可以用来引用。

    举个例子:

    defaults: &defaults

     database:  postgres

     host:     localhost

    development:

     database: our_development

     <<: *defaults

    test:

     database: our_test

         <<: *defaults

    等同于下面的代码:

    defaults:

     database:  postgres

     host:     localhost

    development:

     database: our_development

     database:  postgres

     host:     localhost

    test:

     database: our_test

     database:  postgres

         host:     localhost

    &用来建立锚点(defaults),<<表示合并到当前数据,*用来引用锚点。

    关于YAML,今天就介绍这么多,同学们想要更多了解YAML,可以关注官网:https://yaml.org/

    作  者:Testfan Arthur

    出  处:微信公众号:自动化软件测试平台

    版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出文章链接

  • 相关阅读:
    powershell 统计AD中所有计算机及对应的操作系统信息
    centos7安装图形化界面
    centos7使用cobbler(2.8)批量部署操作系统之二
    centos7使用cobbler(2.8)批量部署操作系统之一
    自画一张linux基础架构学习框架图
    python编程快速上手之第10章实践项目参考答案
    python编程快速上手之第9章实践项目参考答案
    mysql基础之yum安装mysql5.7.18
    mysql基础篇-----mysql简介
    百度前端面试题(一)
  • 原文地址:https://www.cnblogs.com/testfan2019/p/11890988.html
Copyright © 2011-2022 走看看