大白肥妇BBVBBW高潮,国产亚洲真人做受在线观看,久久久亚洲欧洲日产国码农村,荫蒂BBwBBB高潮

    電話

    0411-39943997

仟億科技
客服中心
  • 電話
  • 電話咨詢:0411-39943997
  • 手機(jī)
  • 手機(jī)咨詢:15840979770
    手機(jī)咨詢:13889672791
網(wǎng)絡(luò)營銷 >更多
您現(xiàn)在的位置:首頁 > 新聞中心 > 常見問題

序列化格式Y(jié)AML初步了解

作者:billionnet 發(fā)布于:2012/5/11 18:47:39 點(diǎn)擊量:

YAML,是一個(gè)可讀性高,用來表達(dá)資料序列的編程語言。YAML參考了其他多種語言,包括:XML、C語言、Python、Perl以及電子郵件格式。目YAML是”YAML Ain’t a Markup Language”(YAML不是一種置標(biāo)語言)的遞歸縮寫。在開發(fā)的這種語言時(shí),YAML 的意思其實(shí)是:”Yet Another Markup Language”(仍是一種置標(biāo)語言),但為了強(qiáng)調(diào)這種語言以數(shù)據(jù)做為中心,而不是以置標(biāo)語言為重點(diǎn),而用返璞詞重新命名。

YAML的功能

YAML的語法和其他高階語言類似,并且可以簡單表達(dá)清單、雜湊表,標(biāo)量等資料形態(tài)。它使用空白符號(hào)縮排和大量依賴外觀的特色,特別適合用來表達(dá)或編輯數(shù)據(jù)結(jié)構(gòu)、各種設(shè)定檔、傾印除錯(cuò)內(nèi)容、文件大綱(例如:許多電子郵件標(biāo)題格式和YAML非常接近)。盡管它比較適合用來表達(dá)階層式(hierarchical model)的數(shù)據(jù)結(jié)構(gòu),不過也有精致的語法可以表示關(guān)聯(lián)性(relational model)的資料。由于YAML使用空白字符和分行來分隔資料,使的他特別適合用grep/Python/Perl/Ruby操作。其讓人最容易上手的特色是巧妙避開各種封閉符號(hào),如:引號(hào)、各種括號(hào)等,這些符號(hào)在巢狀結(jié)構(gòu)時(shí)會(huì)變得復(fù)雜而難以辨認(rèn)。

為什么不使用XML?

  • YAML的可讀性好。
  • YAML和腳本語言的交互性好。
  • YAML使用實(shí)現(xiàn)語言的數(shù)據(jù)類型。
  • YAML有一個(gè)一致的信息模型。
  • YAML易于實(shí)現(xiàn)。

上面5條也就是XML不足的地方。同時(shí),YAML也有XML的下列優(yōu)點(diǎn):

  • YAML可以基于流來處理;
  • YAML表達(dá)能力強(qiáng),擴(kuò)展性好。

總之,YAML試圖用一種比XML更敏捷的方式,來完成XML所完成的任務(wù)。

為什么不使用JSON ?

JSON的語法是YAML1.2版的子集,,同時(shí)非常接近YAML1.0與1.1版的子集,因此大部分的JSON文件都可以被YAML的剖析器剖析。這是因?yàn)镴SON的語法結(jié)構(gòu)和YAML的內(nèi)置格式相同。雖然大范圍的分層也可以使用類似JSON的內(nèi)置格式,不過這并YAML標(biāo)準(zhǔn)并不建議這樣使用,除非這樣編寫能讓文件可讀性增加。YAML的許多擴(kuò)展在JSON是找不到的,如:進(jìn)階資料形態(tài)、關(guān)系錨點(diǎn)、字串不需要雙引號(hào)、映射資料形態(tài)會(huì)儲(chǔ)存鍵值的順序。

YAML的語法要求

yaml.org(英文)可以找到輕巧而好用的小抄(亦是用YAML表示)及格式說明。下面的內(nèi)容,是關(guān)于基本元件的摘要。

  • YAML使用可打印的Unicode字符,可使用UTF-8或UTF-16。
  • 使用空白字符為文件縮排來表示結(jié)構(gòu);不過不能使用跳格字符(TAB)。
  • 注解由井字號(hào)( # )開始,可以出現(xiàn)在一行中的任何位置,而且范圍只有一行(也就是一般所謂的單行注解)
  • 每個(gè)清單成員以單行表示,并用短杠+空白( - )起始?;蚴褂梅嚼ㄌ?hào)( [ ] ),并用逗號(hào)+空白( , )分開成員。
  • 每個(gè)雜湊表的成員用冒號(hào)+空白( : )分開鍵值和內(nèi)容?;蚴褂么罄ㄌ?hào)( { } ),并用逗號(hào)+空白( , )分開。
    • 雜湊表的鍵值可以用問號(hào) ( ? )起始,用來明確的表示多個(gè)詞匯組成的鍵值。
  • 字串平常并不使用引號(hào),但必要的時(shí)候可以用雙引號(hào) ( )或單引號(hào) ( )框住。
    • 使用雙引號(hào)表示字串時(shí),可用倒斜線( \ )開始的跳脫字符(這跟C語言類似)表示特殊字符。
  • 區(qū)塊的字串用縮排和修飾詞(非必要)來和其他資料分隔,有新行保留(preserve)(使用符號(hào) | )或新行折疊(flod)(使用符號(hào) > )兩種方式。
  • 在單一檔案中,可用連續(xù)三個(gè)連字號(hào)(——)區(qū)分多個(gè)檔案。
    • 另外,還有選擇性的連續(xù)三個(gè)點(diǎn)號(hào)( )用來表示檔案結(jié)尾。
  • 重復(fù)的內(nèi)容可使從參考標(biāo)記星號(hào) ( * )復(fù)制到錨點(diǎn)標(biāo)記( & )。
  • 指定格式可以使用兩個(gè)驚嘆號(hào) ( !! ),后面接上名稱。
  • 檔案中的單一文件可以使用指導(dǎo)指令,使用方法是百分比符號(hào)( % )。有兩個(gè)指導(dǎo)指令在YAML1.1版中被定義:
    • %YAML 指導(dǎo)指令,用來識(shí)別文件的YAML版本。
    • %TAG 指導(dǎo)指令,被用在URI的字首標(biāo)記。這個(gè)方法在標(biāo)記節(jié)點(diǎn)的型態(tài)時(shí)相當(dāng)有用。

YAML再使用逗號(hào)及冒號(hào)時(shí),后面都必須接一個(gè)空白字符,所以可以再字串或數(shù)值中自由加入分隔符號(hào)(例如:5,280或http://www.wikipedia.org)而不需要使用引號(hào)。

另外還有兩個(gè)特殊符號(hào)在YAML中被保留,有可能在未來的版本被使用–( @ )和( ` )。

YAML的適用范圍

由于實(shí)現(xiàn)簡單,解析成本很低,YAML特別適合在腳本語言中使用。列一下現(xiàn)有的語言實(shí)現(xiàn):Ruby,Java,Perl,Python,PHP,OCaml,JavaScript。除了Java,其他都是腳本語言.

YAML比較適合做序列化。因?yàn)樗撬拗髡Z言數(shù)據(jù)類型直轉(zhuǎn)的。

YAML做配置文件也不錯(cuò)。比如Ruby on Rails的配置就選用的YAML。對(duì)ROR而言,這很自然,也很省事.

由于兼容性問題,不同語言間的數(shù)據(jù)流轉(zhuǎn)建議現(xiàn)在不要用YAML.

YAML存在的意義

無論多么完美的事物,都需要有對(duì)立面,有說“NO”的聲音。XML也不例外。當(dāng)然,站在主流的對(duì)立面,需要勇氣和智慧。

YAML和XML不同,沒有自己的數(shù)據(jù)類型的定義,而是使用實(shí)現(xiàn)語言的數(shù)據(jù)類型。這一點(diǎn),有可能是出奇制勝的地方,也可能是一個(gè)敗筆。如果兼容性保證的不好的話,YAML數(shù)據(jù)在不同語言間流轉(zhuǎn)會(huì)有問題。如果兼容性好的話,YAML就會(huì)成為不同語言間數(shù)據(jù)流通的橋梁。建議yaml.org設(shè)立兼容認(rèn)證機(jī)制,每個(gè)語言的實(shí)現(xiàn)必須通過認(rèn)證。

假如兼容性沒問題的話,YAML就太完美了。輕巧,敏捷,高效,簡便,通用。這才是理想中的數(shù)據(jù)模型。當(dāng)然就現(xiàn)在而言,這還只是個(gè)理想。

常用YAML函式庫

  • PHP
    • Spyc 純PHP的實(shí)現(xiàn)。
    • PHP-Syck(與SYCK函式庫綁定)
    • sfYamlsymfony項(xiàng)目重寫的Spyc, 可獨(dú)立使用, 可以產(chǎn)生和剖析YAML文件。
  • Python
    • PyYaml 純Python,或可選用LibYAML的函式庫。
    • PySyck 與SYCK綁定。


分享到:


Copyright@ 2011-2016 版權(quán)所有:大連千億科技有限公司 遼ICP備11013762-3號(hào)   google網(wǎng)站地圖   百度網(wǎng)站地圖   網(wǎng)站地圖

公司地址:大連市沙河口區(qū)中山路692號(hào)辰熙星海國際2317 客服電話:0411-39943997 QQ:2088827823 37482752

法律聲明:未經(jīng)許可,任何模仿本站模板、轉(zhuǎn)載本站內(nèi)容等行為者,本站保留追究其法律責(zé)任的權(quán)利! 隱私權(quán)政策聲明