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/

YAML-初识的更多相关文章

  1. Go实战--也许最快的Go语言Web框架kataras/iris初识(basic认证、Markdown、YAML、Json)

    ris自称是Go语言中所有Web框架最快的,它的特点如下: 1.聚焦高性能 2.健壮的静态路由支持和通配符子域名支持. 3.视图系统支持超过5以上模板 4.支持定制事件的高可扩展性Websocket ...

  2. Ansible_自动化运维《Ansible之初识-1》

    1.Ansible简介 1.1 Ansible介绍 Ansible 是一个简单的自动化运维管理工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fab ...

  3. ansible笔记(10):初识ansible playbook

    ansible笔记():初识ansible playbook 假设,我们想要在test70主机上安装nginx并启动,我们可以在ansible主机中执行如下3条命令 ansible test70 -m ...

  4. 联盟链初识以及Fabric环境搭建流程

    这篇文章首先简单介绍了联盟链是什么,再详细的介绍了Fabric环境搭建的整个流程. 区块链分类: 以参与方式分类,区块链可以分为:公有链.联盟链和私有链. 定义: 我们知道区块链就是一个分布式的,去中 ...

  5. ansible学习-playbook的YAML语法

    [一篇非常好的ansible参考博文] 初识Ansible http://liumissyou.blog.51cto.com/4828343/1616462 --------------------- ...

  6. Playbook剧本初识

    目录 1.Playbook剧本初识 2.Playbook变量使用 3.Playbook变量注册 4.Playbook条件语句 5.Playbook循环语句 6.Playbook异常处理 7.Playb ...

  7. 1.初识Redis

    作者 微信:tangy8080 电子邮箱:914661180@qq.com 更新时间:2019-08-14 20:35:36 星期三 欢迎您订阅和分享我的订阅号,订阅号内会不定期分享一些我自己学习过程 ...

  8. C#与yaml解析

    YAML 官方网站称 YAML 是"一种所有编程语言可用的友好的数据序列化标准".YAML Ain't Markup Language,和GNU一样,YAML是一个递归着说&quo ...

  9. Android动画效果之初识Property Animation(属性动画)

    前言: 前面两篇介绍了Android的Tween Animation(补间动画) Android动画效果之Tween Animation(补间动画).Frame Animation(逐帧动画)Andr ...

  10. SpringBoot中yaml配置对象

    转载请在页首注明作者与出处 一:前言 YAML可以代替传统的xx.properties文件,但是它支持声明map,数组,list,字符串,boolean值,数值,NULL,日期,基本满足开发过程中的所 ...

随机推荐

  1. MSP430G2333下位机乘法运算需要注意的一个问题

    背景: 最近负责为主板管理电源的电源管理模块编写软体,使用的MCU为MSP430G2333.功能上很简单,即通过板子上的硬件拨码设定,或者通过IIC与主板通信,由主板的BIOS决定开机及关机的延时供电 ...

  2. 如何给wordpress外部链接自动添加nofollow

    wordpress多作者博客可以丰富网站的内容,但同时也会产生一些无关的链接,例如有些投机的人会考虑在文章中随意添加外部链接,如果你不想给这些外部链接传递权重,你需要给这些外部链接加上 rel=&qu ...

  3. 2.交通聚类 -层次聚类(agnes)Java实现

    1.项目背景 在做交通路线分析的时候,客户需要找出车辆的行车规律,我们将车辆每天的行车路线当做一个数据样本,总共有365天或是更多,从这些数据中通过聚类来获得行车路线规律统计分析. 我首先想到是K-m ...

  4. solr

    一.启动命令 tar -zxvf solr-.tgz cd solr-\example java -jar start.jar 默认监听8983端口 java -Djetty.port= -jar s ...

  5. JAVA-多屏幕显示

    以下代码适用于:一台主机连接多台显示器,JAVA Swing窗口需要分别显示到对应的显示器上. GraphicsEnvironment env = GraphicsEnvironment.getLoc ...

  6. loadrunner-27796错误寻求解决办法

    Action.c(58): Error -27796: Failed to connect to server "www.baidu.com:80": [10048] Addres ...

  7. CDN技术发展趋势

    智能化 存储智能化 关键技术点:文件分片热度的判断策略,跨节点快速文件调度 存储向以文件切片为基础的全网共享存储发展:把一个整片切成n个小块,按用户访问热度分散存储在不同节点.当用户访问的时候,由边缘 ...

  8. 在linux下安装Python:

    # 下载最新版本 cd /usr/local/src/ sudo wget http://www.python.org/ftp/python/3.3.2/Python-3.3.2.tar.bz2 su ...

  9. 2016年10月10日--穷举、迭代、while循环

    穷举 将所有可能性全部全部走一遍,使用IF筛选出满足的情况 练习: 1.单位给发了一张150元购物卡, 拿着到超市买三类洗化用品. 洗发水15元,香皂2元,牙刷5元. 求刚好花完150元,有多少种买法 ...

  10. django操作数据库之查询F,Q操作 和 seach搜索功能

    # F 使用查询条件的值 # # from django.db.models import F # models.Tb1.objects.update(num=F('num')+1) # Q 构建搜索 ...