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. 在PHP中$_SESSION的使用方法

    使用PHP应用session时,将session中的数据存储在服务器上,然后通过客户端传来的sessionID识别客户端的信息,并提取信息. php中的session的常用操作:session的写入. ...

  2. Android高仿微信(一)——如何消除启动时的白屏

    默认情况下,APP启动时会先把屏幕刷成白色,然后才绘制第一个Activity中的View,这两个步骤之间的延迟会造成启动后先看到白屏(时间大概为1秒左右).时间不长,但是我们也看到,一般的APP时不存 ...

  3. Javascript高级程序设计——面向对象之创建对象

    对象创建方法: 工厂方法 构造函数模式 原型模式 组合构造函数和原型模式 寄生构造函数模式 问题构造函数模式 工厂模式: function Person(name, age){ var obj = n ...

  4. java历史

    1.产生: 1990年初sun公司James Gosling等员工开发java语言的雏形,最初被命名为Oak,定位于家用电器的控制和通讯,随后因为市场的需求,公司放弃计划,后面由于Internet的发 ...

  5. setImageResource和setBackgroundResource的區別

    它們的原型如下:void android.widget.ImageView.setImageResource(int resId)void android.view.View.setBackgroun ...

  6. 【转】 js怎么区分出点击的是鼠标左键还是右键?

    IE 下 onMouseDown 事件有个 events.button 可以返回一个数值,根据数值判断取得用户按了那个鼠标键 events.button==0  默认.没有按任何按钮. events. ...

  7. 破解TexturePacker加密资源

    http://blog.csdn.net/ynnmnm/article/details/38392795 最近我们要开一个新项目,UI与交互打算借鉴当前正火的<圣火英雄传>,程序开发为了和 ...

  8. navigationcontroller手势翻页和navigationbar

    一. 系统导航默认手势 #import "CBNavigationController.h" //手势返回 @interface CBNavigationController () ...

  9. hiberante入门

    Hibernate 目前企业级应用一般均采用面向对象的开发方法,而内存中的对象数据不能永久存在,如想借用关系数据库来永久保存这些数据的话,无疑就存在一个对象-关系的映射过程.在这种情形下,诞生了许多解 ...

  10. BZOJ 2084: [Poi2010]Antisymmetry

    Sol Manacher. \(O(n)\) Manacher很简单啊.改一改转移就可以了. 然后我WA了.一开始天真的认为id只会是奇数,然后就GG. 一组 Hack 数据 3 1 0 0 然后就跳 ...