首页 > 其他分享 >YAML标记语言格式备忘

YAML标记语言格式备忘

时间:2023-10-07 17:07:20浏览次数:31  
标签:缩进 语言 YAML 备忘 空白 使用 格式 脚本语言

简介

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操作。其让人最容易上手的特色是巧妙避开各种封闭符号,如:引号、各种括号等,因为这些符号在嵌套结构时会变得复杂而难以辨认  。

格式

多行缩进

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

house:
  family:
    name: Doe
    parents:
      - John
      - Jane
    children:
      - Paul
      - Mark
      - Simone
  address:
    number: 34
    street: Main Street
    city: Nowheretown
    zipcode: 12345

注意:

  1. 字串不一定要用双引号标识;
  2. 在缩排中空白字符的数目并不是非常重要,只要相同阶层的元素左侧对齐就可以了(但是:不能使用TAB字符);
  3. 允许在文件中加入选择性的空行,以增加可读性;
  4. 在一个档案中,可同时包含多个文件,并用“——”分隔;
  5. 选择性的符号“...”可以用来表示档案结尾(在利用串流的通讯中,这非常有用,可以在不关闭串流的情况下,发送结束讯号)。

单行缩写

YAML也有用来描述好几行相同结构的数据的缩写语法,数组用'[]'包括起来,hash用'{}'来包括。因此,上面的这个YAML能够缩写成这样:

house:
  family: { name: Doe, parents: [John, Jane], children: [Paul, Mark, Simone] }
  address: { number: 34, street: Main Street, city: Nowheretown, zipcode: 12345 }


基本语法

  • YAML使用可打印的Unicode字符,可使用UTF-8或UTF-16。
  • 数据结构采用键值对的形式,即 键名称: 值,注意冒号后面要有空格。
  • 每个数组成员以单行表示,并用短杠+空白(- )起始。或使用方括号([]),并用逗号+空白(, )分开成员。
  • 每个散列表的成员用冒号+空白(: )分开键值和内容。或使用大括号({ }),并用逗号+空白(, )分开。
  • 字符串值一般不使用引号,必要时可使用,使用双引号表示字符串时,会转义字符串中的特殊字符(例如\n)。使用单引号时不会转义字符串中的特殊字符。
  • 大小写敏感。
  • 使用缩进表示层级关系,缩进不允许使用tab,只允许空格,因为有可能在不同系统下tab长度不一样。
  • 缩进的空格数可以任意,只要相同层级的元素左对齐即可。
  • 在单一文件中,可用连续三个连字号(—)区分多个文件。还有选择性的连续三个点号(…)用来表示文件结尾。
  • '#'表示注释,可以出现在一行中的任何位置,单行注释。
  • 在使用逗号及冒号时,后面都必须接一个空白字符,所以可以在字符串或数值中自由加入分隔符号(例如:5,280或http://www.wikipedia.org)而不需要使用引号。


适用场景

[1]脚本语言

由于实现简单,解析成本很低,YAML特别适合在脚本语言中使用。现有的语言实现支持:Ruby,Java,Perl,Python,PHP,OCaml,JavaScript,Go 。注意:上面除了Java 和 Go,其他都是脚本语言。

[2]序列化

YAML比较适合做序列化。因为它是宿主语言数据类型直转的。

[3]配置文件

YAML做配置文件也非常好。写YAML要比写XML快得多(无需关注标签或引号),并且比ini文档功能更强。

比如Ruby on Rails的配置就选用的YAML。

由于兼容性问题,不同语言间的数据流转建议不要用YAML。

函数库支持

简单的YAML档案(例如:简单的键值对)不需要完整的YAML剖析器,便可以被RegEx解析。许多常用的编程语言──纯用某个语言,让函数库具有可携性──都有的YAML的产生器和剖析器。当效能比较重要时,也有许多和C语言绑定的函式库可使用。

其中,GO语言的操作库为Go-yaml有关其他语言支持库,请[引用]中的百度百科介绍。

有关YAML对于各种数据类型的支持,在[引用]中尾号为180的引文中作了详尽解释。

关于Yaml Builder

YAML Builder 是强大的可视化布局工具,只需要简单的设置参数和拖拽模块就能快速创建基于YAML的页面CSS布局。有关详细介绍,请参考这个链接



引用


标签:缩进,语言,YAML,备忘,空白,使用,格式,脚本语言
From: https://blog.51cto.com/zhuxianzhong/7739372

相关文章

  • 三维模型3DTile格式轻量化的数据压缩与性能平衡关系分析
    三维模型3DTile格式轻量化的数据压缩与性能平衡关系分析 对于三维模型的3DTile格式轻量化处理,数据压缩和性能之间的平衡关系是一个重要的考虑因素。以下是这两者关系的详细分析:1、数据压缩与加载速度:显然,更高级别的压缩可以创造更小的文件大小,从而加快从服务器到客户端的传输......
  • multipart/form-data数据格式
    multipart/form-data数据格式(*********************************************multipart/form-data数据格式********************************************#请求头,这个是必须的,需要指定Content-Type为multipart/form-data,指定唯一边界值Content-Ty......
  • 视频直播源码,js判断上传图片格式类型、尺寸大小
    视频直播源码,js判断上传图片格式类型、尺寸大小 /判断图片类型varf=document.getElementById("File1").value;if(f==""){ alert("请上传图片");returnfalse;}else{if(!/\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(f)){alert("图片类型必须是.gif,jpeg,jpg,png中的一种")ret......
  • yml 和 yaml 文件的区别
    yml和yaml文件没有区别,都是YAML(YetAnotherMarkupLanguage)文件的扩展名。YAML是一种可读性高、用来表达数据序列化的格式。YAML参考了其他多种语言,包括:C语言、Python、Perl,并从XML、电子邮件的数据格式(RFC2822)中获得灵感。YAML文件使用缩进和换行等符号来表示层次结构......
  • 前端代码格式化规范总结
    在日常开发过程中,经常会碰到代码格式化不一致的问题,还要就是js代码语法错误等没有及时发行改正,下面就介绍一下如何使用eslint、prettier、husky、lint-staged、commitizen来规范代码格式和提高代码质量的方法。目录准备工作代码检测代码格式化Git规范准备工作新建项......
  • YAML简介
    YAML什么是YAML它是一种以数据为中心的标记语言,全称(YAMLAin'tMarkupLanguage)举例简单的application.yml文件server:port:8080特点1.语言简单,用于在人和计算机之间交换数据2.需要缩进3.主要用于配置信息4.减少了xml等配置文件的众多无效符号YAML语法1.区分大小......
  • 插上u盘显示格式化怎么办?U盘数据恢复可以这样做
    U盘以其体积小巧、存储容量大、读写速度快的特点,在各种工作和个人使用场合中得到了广泛应用,因此深得用户好评。然而,在日常使用U盘的过程中,经常会遇到一些问题和挑战。当我需要转移一些资料文件时,总是喜欢使用U盘,相信有很多朋友也是这样。但是在使用U盘的过程中,也会由于使用不当强制......
  • 一 . 格式化输出函数 scanf
    scanf函数的功能是格式化输出任意数据列表,其一般调用格式为:scanf(格式控制符,地址列表)。【说明】(1)地址列表中给出各变量的地址,可以为变量的地址,以&开头,也可以为数组,字符串的首地址。(2)格式控制符由%和格式符组成,作用是将要输入的字符按指定的格式输入如%d,%c......
  • printf函数 和 scangf函数 的格式符
       ......
  • 3-13 字符串类型 字符串类型:str 1.定义格式: 变量 = '内容'
    3-13字符串类型字符串类型:str   1.定义格式:       变量='内容'           打印一行       变量="内容"           打印一行       变量='''内容'''或者三引号           可以通过回车的方式换行,......