.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 }

 

舉例:

john.yaml 文件: 

name: John Smith 
age:  37 
spouse: 
    name: Jane Smith 
    age:  25 
children: 
    -   name: Jimmy Smith 
        age:  15 
    -   name: Jenny Smith 
        age   12

數組表示:

<?php
$john = array(
	'name' => 'John Smith',
	'age' => 37,
	'spouse' => array(
		'name' => 'Jane Smith',
		'age' => 25
	),
	'children' => array(
		0 => array(
			'name' => 'Jimmy Smith',
			'age' => 5
		),
		1 => array(
			'name' => 'Jenny Smith',
			'age' => 3
		)
	)
);

PHP 解析 Yaml 文件的類: 

syck:http://pecl.php.net/package/syck


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM