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/
YAML-初识的更多相关文章
- Go实战--也许最快的Go语言Web框架kataras/iris初识(basic认证、Markdown、YAML、Json)
ris自称是Go语言中所有Web框架最快的,它的特点如下: 1.聚焦高性能 2.健壮的静态路由支持和通配符子域名支持. 3.视图系统支持超过5以上模板 4.支持定制事件的高可扩展性Websocket ...
- Ansible_自动化运维《Ansible之初识-1》
1.Ansible简介 1.1 Ansible介绍 Ansible 是一个简单的自动化运维管理工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fab ...
- ansible笔记(10):初识ansible playbook
ansible笔记():初识ansible playbook 假设,我们想要在test70主机上安装nginx并启动,我们可以在ansible主机中执行如下3条命令 ansible test70 -m ...
- 联盟链初识以及Fabric环境搭建流程
这篇文章首先简单介绍了联盟链是什么,再详细的介绍了Fabric环境搭建的整个流程. 区块链分类: 以参与方式分类,区块链可以分为:公有链.联盟链和私有链. 定义: 我们知道区块链就是一个分布式的,去中 ...
- ansible学习-playbook的YAML语法
[一篇非常好的ansible参考博文] 初识Ansible http://liumissyou.blog.51cto.com/4828343/1616462 --------------------- ...
- Playbook剧本初识
目录 1.Playbook剧本初识 2.Playbook变量使用 3.Playbook变量注册 4.Playbook条件语句 5.Playbook循环语句 6.Playbook异常处理 7.Playb ...
- 1.初识Redis
作者 微信:tangy8080 电子邮箱:914661180@qq.com 更新时间:2019-08-14 20:35:36 星期三 欢迎您订阅和分享我的订阅号,订阅号内会不定期分享一些我自己学习过程 ...
- C#与yaml解析
YAML 官方网站称 YAML 是"一种所有编程语言可用的友好的数据序列化标准".YAML Ain't Markup Language,和GNU一样,YAML是一个递归着说&quo ...
- Android动画效果之初识Property Animation(属性动画)
前言: 前面两篇介绍了Android的Tween Animation(补间动画) Android动画效果之Tween Animation(补间动画).Frame Animation(逐帧动画)Andr ...
- SpringBoot中yaml配置对象
转载请在页首注明作者与出处 一:前言 YAML可以代替传统的xx.properties文件,但是它支持声明map,数组,list,字符串,boolean值,数值,NULL,日期,基本满足开发过程中的所 ...
随机推荐
- 微信封号浪潮再起 A货假代购还能在朋友圈泛滥多久?
你的微信朋友圈是不是很活跃?是不是被很多所谓的名品所包围?没错,这些很多都是A货或假代购的伎俩.如果xmyanke的微信朋友圈出现这些东东,我就会直接屏蔽他的朋友圈权限.具体方法是:打开他的微信详细资 ...
- Hadoop 面试题之Hbase
Hadoop 面试题之九 16.Hbase 的rowkey 怎么创建比较好?列族怎么创建比较好? 答: 19.Hbase 内部是什么机制? 答: 73.hbase 写数据的原理是什么? 答: 75.h ...
- CentOS编译安装Apache 2.4.x时报错:configure: error: Bundled APR requested but not found at ./srclib/. Download and unpack the corresponding apr and apr-util packages to ./srclib/.
先前按照这篇文章“CentOS6.x编译安装LAMP(2):编译安装 Apache2.2.22”去编译安装Apache2.2.x版本时,安装得挺顺利,今天换成Apache2.4.x版本,安装方法一样, ...
- Mysql InnoDB行锁实现方式
Mysql InnoDB行锁实现方式 InnoDB行锁是通过给索引上的索引项加锁来实现的,这一点MySQL与Oracle不同,后者是通过在数据块中对相应数据行加锁来实现的.InnoDB这种行锁实现特点 ...
- css3延时动画
不太理解属性都是什么意思,但是有动画效果,我也是惊呆了 <style> #animated_div{animation:animated_div 4s 1; -moz-animation: ...
- HDU 3743 Frosh Week(归并排序求逆序对)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3743 题目意思就是给你一个长为n的序列,让你求逆序对.我用的是归并排序来求的.归并排序有一个合并的过程 ...
- 剑指Offer 反转链表
题目描述 输入一个链表,反转链表后,输出链表的所有元素. 思路: 法1:用栈,压栈出栈 法2:头插法(有递归非递归2中) AC代码: /* struct ListNode { int va ...
- 好无语的问题----include 后面需要空格么?
前俩天回学校办事,在去师弟宿舍的时候,被问到了一个很 "深奥"得问题 ---------include 后面需要空格么? 在我以前的印象中不管在哪个编译器中,,都是需要有空格的, ...
- eclipse中整合springMvc和velocity
1.项目所需要的jar包(有些可能多余) 2.在src目录下创建一个bean 一个一个controller ,路径如下 person代码: package com.test.bean; import ...
- getopt函数的使用——分析命令行参数
getopt(分析命令行参数) getopt(分析命令行参数) 短参数的定义 返回值 范例 getopt_long 相关函数表头文件#include<unistd.h> 函数声明int g ...