- 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/
您可以看到如下所示的解析輸出: