- YAML 教程
- YAML - 首页
- YAML – 简介
- YAML – 基础
- YAML – 缩进和分隔
- YAML – 注释
- YAML – 集合和结构
- YAML – 标量和标签
- YAML –完整示例
- YAML - 流程
- YAML – 信息模型
- YAML – 语法字符
- YAML – 语法基元
- YAML – 字符流
- YAML – 节点属性
- YAML – 块标量头
- YAML – 流式风格
- YAML – 块式风格
- YAML – 序列风格
- YAML – 流式映射
- YAML – 块序列
- YAML – 安全模式
- YAML – JSON模式
- YAML 有用资源
- YAML - 快速指南
- YAML - 有用资源
- YAML - 讨论
YAML - 流程
YAML遵循标准流程来处理流程。YAML中的原生数据结构包括简单的表示,例如节点。它也称为表示节点图。
它包括映射、序列和标量量,这些量被序列化以创建序列化树。通过序列化,对象被转换为字节流。
序列化事件树有助于创建字符流的表示,如下所示。
反向过程将字节流解析为序列化事件树。之后,节点被转换为节点图。这些值随后被转换为YAML原生数据结构。下图解释了这一点:
YAML中的信息以两种方式使用:**机器处理**和**人工阅读**。YAML中的处理器用作在上面给出的图中转换互补视图之间信息的工具。本章描述了YAML处理器必须在给定应用程序中提供的的信息结构。
YAML包含一个序列化过程,用于以串行格式表示数据对象。YAML信息的处理包括三个阶段:**表示、序列化、呈现和解析**。让我们详细讨论每一个阶段。
表示
YAML使用三种类型的节点来表示数据结构:**序列、映射**和**标量**。
序列
序列指的是有序的条目数量,它映射键值对的无序关联。它对应于Perl或Python的数组列表。
下面显示的代码是序列表示的一个示例:
product:
- sku : BL394D
quantity : 4
description : Football
price : 450.00
- sku : BL4438H
quantity : 1
description : Super Hoop
price : 2392.00
映射
另一方面,映射表示字典数据结构或哈希表。下面提到了一个例子:
batchLimit: 1000 threadCountLimit: 2 key: value keyMapping: <What goes here?>
标量
标量表示字符串、整数、日期和原子数据类型的标准值。请注意,YAML还包含指定数据类型结构的节点。有关标量的更多信息,请参阅本教程的第6章。
序列化
YAML需要序列化过程,这使得易于人工阅读的键顺序和锚点名称变得更容易。序列化的结果是YAML序列化树。它可以被遍历以产生一系列YAML数据的事件调用。
下面给出了一个序列化的例子:
consumer:
class: 'AppBundle\Entity\consumer'
attributes:
filters: ['customer.search', 'customer.order', 'customer.boolean']
collectionOperations:
get:
method: 'GET'
normalization_context:
groups: ['customer_list']
itemOperations:
get:
method: 'GET'
normalization_context:
groups: ['customer_get']
呈现
YAML序列化的最终输出称为呈现。它以易于人工阅读的方式表示字符流。YAML处理器包括各种呈现细节,用于创建流、处理缩进和格式化内容。这个完整的过程由用户的偏好引导。
YAML呈现过程的一个例子是创建的JSON值的输出。观察下面给出的代码,以便更好地理解:
{
"consumer": {
"class": "AppBundle\\Entity\\consumer",
"attributes": {
"filters": [
"customer.search",
"customer.order",
"customer.boolean"
]
},
"collectionOperations": {
"get": {
"method": "GET",
"normalization_context": {
"groups": [
"customer_list"
]
}
}
},
"itemOperations": {
"get": {
"method": "GET",
"normalization_context": {
"groups": [
"customer_get"
]
}
}
}
}
}
解析
解析是呈现的反向过程;它包含一系列字符并创建一系列事件。它丢弃了在呈现过程中引入的细节,这些细节会导致序列化事件。由于输入格式错误,解析过程可能会失败。它基本上是一个检查YAML是否格式良好的过程。
考虑下面提到的YAML示例:
---
environment: production
classes:
nfs::server:
exports:
- /srv/share1
- /srv/share3
parameters:
paramter1
三个短横线表示文档的开始,后面定义了各种属性。
YAML lint是YAML的在线解析器,它有助于解析YAML结构以检查其是否有效。YAML lint的官方链接如下:http://www.yamllint.com/
您可以看到如下所示的解析输出: