YAML-初识

YAML简介

YAML-what?

YAML Ain't Markup Language
和GNU一样,YAML是一个递归着说“不”的名字。不同的是,GNU对UNIX说不,YAML说不的对象是XML。
YAML不是XML。

YANM-use?

实现简单,解析成本很低,YAML特别适合在脚本语言中使用。列一下现有的语言实现:Ruby、Java、Perl、Python、php、OCaml、JavaScript。除Java,其他都是脚本语言

  • YAML比较适合做序列化。因为它是宿主语言数据类型直转的
  • YAML做配置文件也不错。比如Ruby on Rails的配置就选用YAML。
    我现在学习的原因是因为公司需求,使用perl语言去调用YAML会更简洁、方便

YAML-advan

  • YAML的可读性好
  • YAML和脚本语言的交互性好
  • YAML使用实现语言的数据类型
  • YAML有一个一致的信息模型
  • YAML易于实现

YAML-short

YAML和XML不同,没有自己的数据类型的定义,而是使用实现语言的数据类型。但是如果YAML兼容性不好,在不同的语言之间流转会出现问题。假如兼容性没有问题,YAML:轻巧、高效、简便、通用。

YAML-picture

YAML-example

---

site:
    name:sina
    url:http://www.sina.com.cn

---

site:
    name:google
    url:http://www.google.com

---

site:{name:sina,url:http://www.sina.com.cn}

---

site:{name:google,url:http://www/google.com}



#Sequence
#(-)
-agile
-age
-bag

#([...])
[agile,age,bag]

#sequence的sequence
-[agile,age]
-[bag,boy]
-[cab.cow]

#mapping中的sequence
-{name1:http://www.name1.com.cn,name2:http://www.name2.com.cn}
-{name3:http://www.name3.com.cn,name4:http://www.name4.com.cn}

#单一key/value
name:calvin

#复杂key的key/value
#key为sequence时在key前面加?

?[china.japan,malay]:Asian Country

#复杂value的key/value对

#value为sequence
AsianCountries:[china,japan,malay]

YAML-Perl

使用Cpan在perl中安装YAML模块

1.安装Cpan

perl -MCPAN -e shell
cpan> o conf commit
cpan>help						 #获得帮助
cpan>m							 #列出CPAN上所有模块的列表
cpan>install YAML			    #安装模块,自动完成YAML模块从下载到安装的全过程。
cpan>quit 						#退出

备注:在以后安装其他模块的时候,也使用cpan,方便简单

EXAMPLE

国际象棋俱乐部数据的YAML描述

$vim club.yml
---
players:
   name1:&id1
    rating:2700
    status:GM
   name2:&id2
    rating:2700
    status:Computer
   name3:&id3
    rating:1400
    status:Amateur
matches:
  -
    date:2002-10-04
    white:*name2
    black:*name1
    result:draw
  -
    date:2002-10-06
    white:*name1
    black:name2
    result:white
---
$ cat test
#!/home/s/ops/perl/bin/perl

use YAML;
my $club = YAML::LoadFile('club.yml');
my $club_yamlstr = YAML::Dump($club);

参考博文:
http://www.cnblogs.com/chwkai/archive/2009/03/01/249924.html

http://www.cnblogs.com/dbasys/archive/2007/06/11/2127620.html

http://www.ibm.com/developerworks/cn/xml/x-matters/part23/

勿忘初心,放得始终
原文地址:https://www.cnblogs.com/cherishry/p/5674537.html