`
nbkangta
  • 浏览: 430637 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

YAML学习笔记

    博客分类:
  • YAML
 
阅读更多

这基本是官方文档的部分翻译和自我理解,主要为了能有个地方放一下,最近也打算迁移Blog 到 Github了。

正在搞Jekyll,iteye现在的人气实在不行咯

 

YAML Ain't Markup Language(YAML)

语法

Structure 空格 Sequence - Map 键值对对 : 分割

Collections

Example 2.1 Sequence of scalars

- Mark McGwire
- Sammy Sosa
- Ken Griffey

Example 2.2 Mapping of scalars to scalars

hr: 65
avg: 0.278
rbi: 147

Example 2.3 Mapping of scalars to sequences

american:
    - Boston Red Sox
    - Detroit Tigers
    - New York Yankees
national:
    - New York Mets
    - Chicago Cubs
    - Atlanta Braves

Example 2.4 Sequence of mappings

-
 name: Mark McGwire
 hr: 65
 avg: 0.278
-
 name: Sammy Sosa
 hr: 63
 avg: 0.288

Example 2.5 Sequence of sequences

- [name, hr, avg]
- [Mark McGwire, 65, 0.278]
- [Sammy Sosa, 63, 0.299]

Example 2.6 Mapping of mappings

Mark McGwire: {hr: 65, avg: 0.278}
Sammy Sosa: {
    hr: 63,
    avg: 0.288
}

Structure

在一个档案中,可同时包含多个文件,并用"——"分隔。选择性的符号"..."可以用来表示档案结尾(在利用串流的通讯中,这非常有用,可以在不关闭串流的情况下,发送结束讯号)。

Example 2.7 Tow Documents in a Stream(each with a leading comment)

# Ranking of 1998 home runs
---
- Mark McGwire
- Sammy Sosa
- Ken Griffey

# Team ranking
---
- Chicago Cubs
- St Louis Cardinals

Example 2.8 Play by Play Feed

from a Game

---
time: 20:03:20
player: Sammy Sosa
action: strike (miss)
...
---
time: 20:03:47
player: Sammy Sosa
action: grand slam
...

重复的node可以用锚点&定义,下一次使用*引用

Example 2.9 Single Document with Two Comments

---
hr: # 1998 hr ranking
  - Mark McGwire
  - Sammy Sosa
rbi:
  # 1998 rbi ranking
  - Sammy Sosa
  - Ken Griffey

Example 2.10 Node for "Sammy Sosa"

appears twice in this document

---
hr:
  - Mark McGwire
  # Following node labeled SS
  - &SS Sammy Sosa
rbi:
  - *SS # Subsequent occurrence
  - Ken Griffey

? 加上一个空格后面可以带上一个复杂的Mapping Key

Example 2.11. Mapping between Sequences

? - Detroit Tigers
  - Chicago cubs
:
  - 2001-07-23

? [ New York Yankees,
    Atlanta Braves ]
: [ 2001-07-02, 2001-08-12,
    2001-08-14 ]

Example 2.12. Compact Nested Mapping

---
# Products purchased
- item    : Super Hoop
  quantity: 1
- item    : Basketball
  quantity: 4
- item    : Big Shoes
  quantity: 1

Scalars 标量

区块字符可以以| 或 > 打头开始,用|打头会保留换行符,用>会以折叠的方式保存,换行符会被保存为空格

Example 2.13 In literals, newlines are preserved

# ASCII Art
--- |
  \//||\/||
  // ||  ||__

Example 2.14. In the folded scalars, newlines become spaces

--- >
  Mark McGwire's
  year was crippled
  by a knee injury.

Example 2.15. Folded newlines are preserved for "more indented" and blank lines

>
 Sammy Sosa completed another
 fine season with great stats.

   63 Home Runs
   0.288 Batting Average

 What a year!

Example 2.16. Indentation determines scope

name: Mark McGwire
accomplishment: >
  Mark set a major league
  home run record in 1998.
stats: |
  65 Home Runs
  0.278 Batting Average

YAML的标量包含了加引号的文本和不加引号的文本,目前使用的都是不加引号的文本。双引号文本提供了转义,单引号不提供转义。所有的文本标量都能跨多行;换行符会自动的折叠

Example 2.17. Quoted Scalars

unicode: "Sosadidfine.\u263A"
control: "\b1998\t1999\t2000\n"
hex esc: "\x0d\x0ais\r\n"

single: '"Howdy!"hecried.'
quoted: '#Nota''comment''.'
tie-fighter: '|\-*-/|'

Example 2.18. Multi-line Flow Scalars

plain:
  This unquoted scalar
  spans many lines.

quoted: "Sodoesthis
  quotedscalar.\n"

Tags

YAML中,默认的数据类型根据使用的场景耳钉。通常的类型包含了seq,map和str。还有一些包含int, float, null。另外还有binary, omap, set等等 如果要在YAML中指定数据类型,在数据类型标示前加!。强制类型转换用!!, 另外还能使用自定义类型!

Example 2.23. Various Explicit Tags

---
not-date: !!str 2002-04-28

picture: !!binary |
 R0lGODlhDAAMAIQAAP//9/X
 17unp5WZmZgAAAOfn515eXv
 Pz7Y6OjuDg4J+fn5OTk6enp
 56enmleECcgggoBADs=

application specific tag: !something |
 The semantics of the tag
 above may be different for
 different documents.

Example 2.24. Global Tags

%TAG ! tag:clarkevans.com,2002:
--- !shape
  # Use the ! handle for presenting
  # tag:clarkevans.com,2002:circle
- !circle
  center: &ORIGIN {x: 73, y: 129}
  radius: 7
- !line
  start: *ORIGIN
  finish: { x: 89, y: 102 }
- !label
  start: *ORIGIN
  color: 0xFFEEBB
  text: Pretty vector drawing.

Example 2.25. Unordered Sets

# Sets are represented as a
# Mapping where each key is
# associated with a null value
--- !!set
? Mark McGwire
? Sammy Sosa
? Ken Griff

Example 2.26. Ordered Mappings

# Ordered maps are represented as
# A sequence of mappings, with
# each mapping having one key
--- !!omap
- Mark McGwire: 65
- Sammy Sosa: 63
- Ken Griffy: 58

完整的例子

Example 2.27. Invoice

--- !<tag:clarkevans.com,2002:invoice>
invoice: 34843
date   : 2001-01-23
bill-to: &id001
    given  : Chris
    family : Dumars
    address:
        lines: |
            458 Walkman Dr.
            Suite #292
        city    : Royal Oak
        state   : MI
        postal  : 48046
ship-to: *id001
product:
    - sku         : BL394D
      quantity    : 4
      description : Basketball
      price       : 450.00
    - sku         : BL4438H
      quantity    : 1
      description : Super Hoop
      price       : 2392.00
tax  : 251.42
total: 4443.52
comments:
    Late afternoon is best.
    Backup contact is Nancy
    Billsmer @ 338-4338.
分享到:
评论

相关推荐

    第二周第一天的学习笔记-yaml

    通过以上几个示例,我们不仅了解了Kubernetes中常见的几种资源对象的YAML定义方式,还学习了如何通过YAML文件来管理和部署这些资源。这为我们在生产环境中高效利用Kubernetes奠定了坚实的基础。

    SpringBoot经典学习笔记

    在"SpringBoot经典学习笔记"中,你可能会了解到以下关键知识点: 1. **起步依赖(Starter Dependencies)**:SpringBoot通过starter依赖来简化构建配置,比如`spring-boot-starter-web`用于Web应用,`spring-boot-...

    SpringBoot学习笔记完整教程

    Spring Boot 是一个基于 Spring 框架的快速开发...这个完整的 Spring Boot 学习笔记涵盖了从基础到进阶的各个方面,通过学习和实践,你可以掌握 Spring Boot 开发的核心技能,从而高效地构建高质量的 Java 后端应用。

    基于JavaScript的多语言编程知识学习笔记设计源码

    该项目是一个多语言编程知识学习笔记设计源码,汇集了185个文件,涵盖JavaScript、TypeScript、HTML、C++、Vue、Python、Lua等多种编程语言,文件类型丰富多样,包括55个JSON文件、28个JavaScript文件、26个...

    基于HomeAssistant的JavaScript学习笔记视频文档设计源码

    该项目是一个关于HomeAssistant的视频文档学习笔记源码,由150个文件组成,涵盖多种编程语言,包括86个Markdown文件、23个YAML配置、11个JavaScript脚本、4个Shell脚本、4个HTML文件、3个Python脚本、3个CSS样式表、...

    基于JavaScript、CSS、HTML及Shell语言的CS学习笔记设计源码

    该项目为CS学习笔记的设计源码,集成了JavaScript、CSS、HTML及Shell语言,总计包含518个文件,涵盖297个PNG图片、135个Markdown文档、17个JavaScript脚本、5个JPG图片、3个CSS样式表、3个GIF动画、1个LICENSE文件、...

    自动化运维工具ansible学习笔记.pdf

    2. **易用性**:Ansible使用YAML格式来编写配置文件,相比其他配置管理工具如Puppet或Chef使用的DSL语言,YAML更加简洁易读。 3. **强大的远程命令执行能力**:Ansible能够高效地执行远程命令,并且支持复杂的条件...

    SpringBoot2学习笔记.zip

    SpringBoot2学习笔记 在Java开发领域,SpringBoot框架已经成为构建高效、简洁的企业级应用的首选。SpringBoot2是其最新版本,它极大地简化了Spring应用程序的初始设置和配置过程,使得开发者可以更快地投入到实际的...

    yolov学习笔记-行人数据集

    yolov学习笔记-行人数据集 本文档记录了 yolov5 学习笔记中的行人数据集部分,包括安装 Anaconda、复制 yolov5 代码、修改代码、安装依赖包、运行训练、数据标注、更改模型参数和数据参数等步骤。 一、安装 ...

    基于Java的阿里巴巴Java编程规范学习笔记设计源码

    本项目为基于Java的阿里巴巴Java编程规范学习笔记设计源码,包含72个文件,包括39个Java源文件、9个XML配置文件、7个YAML配置文件、7个PNG图片文件、3个Markdown文档、3个SQL脚本文件、2个配置文件、1个Git忽略文件...

    基于Spring实战书籍的Java设计源码学习笔记

    该项目是对《Spring实战》书籍设计源码的学习笔记,包含2999个文件,涵盖850个Java源文件、348个HTML文件、320个TypeScript文件、156个XML文件、149个CSS文件、146个PNG文件、141个Git忽略文件、140个Shell脚本文件...

    第一周第五天的学习笔记

    ### YAML 语言简介 YAML(YAML Ain't Markup Language),一种人类可读的数据序列化格式,被设计用于表达配置文件、...通过对YAML的理解以及Kubernetes中Pod的配置和原理学习,可以更好地掌握如何管理和部署应用程序。

    SpringBoot学习笔记.docx

    这篇学习笔记将引导我们深入了解 SpringBoot 的基本用法,包括项目的创建、返回视图、数据库交互、前端与后端数据传递、日志管理和安全控制等方面。 1. **新建项目**: 创建 SpringBoot 项目通常是通过 Maven 或 ...

    第二周第一天的学习笔记

    ### 第二周第一天的学习笔记 #### 一、Kubernetes (K8S) 中的 Deployment (部署) **Deployment** 是 Kubernetes 中用于管理应用实例的核心概念之一,它提供了声明式的更新功能,确保应用程序始终运行指定数量的...

    girl项目学习笔记1

    ### Girl项目学习笔记1 #### 一、Spring Boot项目初始化与Maven镜像更换 **1.1 更换IDEA内置Maven镜像至阿里云中央仓库** 在启动Spring Boot项目之前,首先需要确保开发环境配置正确。对于使用IntelliJ IDEA作为...

    springboot学习笔记.zip

    6. **YAML/Properties配置**:SpringBoot支持使用YAML或Properties文件进行配置,YAML格式更易读,而Properties则更为传统。配置可以通过`@Value`注解注入到bean中,或者通过@ConfigurationProperties绑定复杂对象。...

    Part 2 ROS学习笔记1

    在这个"ROS学习笔记1"中,我们主要关注如何在ROS中构建移动机械臂的模型,并将其与移动小车模型集成。以下是详细的知识点说明: 1. **初始化工作空间**: 在开始ROS项目之前,首先需要创建一个工作空间(workspace...

    Spring Boot 学习笔记完整教程new

    这个学习笔记的完整教程涵盖了从基础到进阶的多个主题,旨在帮助初学者快速上手并深入理解Spring Boot的核心特性。 1. **Spring Boot HelloWorld**:这是每个教程的起点,通常包括创建一个新的Spring Boot项目,...

Global site tag (gtag.js) - Google Analytics