什么是YAML? 本文地址 http://www./articles/what_is_yaml.html 1.YAML ="YAML Ain‘t Markup Language"官方网站的解释是YAML ="YAML Ain‘t Markup Language"(缩写为YAML)。这是一种数据序列化(serialization )语言,是一种可读的文本的数据结构,它的设计目标是使人们容易读,程序容易处理。它类似XML,但是比XML简单。
2.设计目标:YAML的设计目标如下:
3.和XML的关系新手总是试图了解YAML和XML的关系,这两种语言在某些领域是处于竞争之中,除此没有什么直接关系。 YAML 首先是一种数据序列化语言,而XML则是向后继承了SGML(Standard Generalized Markup Language)。XML试图做到面面俱到,它试图成为一种文档格式、数据格式、消息包格式、安全的 RPC 通道(SOAP)甚至XML数据库;而YAML只关注有限的领域,它只是清晰地表示在动态编程语言(如 Perl、Python、Ruby)中所遇到的数据结构以及数据类型。目前,对于这些语言,已经有了一些绑定/库。 4.YAML初步YAML中数据主要由序列(sequence),map(有的也叫做hash)和标量(scalar )来表示。语法比较简单,易于人们阅读。
例子: 1。序列- apple - banana - carrot - apple - - foo - bar - x123 - banana - carrot foo: whatever bar: stuff foo: whatever bar: - uno - dos foo: whatever bar: fruit: apple name: steve sport: baseball ---
hash: { name: Steve, foo: bar }
5.Ruby中的YAML支持Ruby1.8已经包含了YAML支持了。只需要require进来就行了。 一个例子: # file name yaml.rb
require ‘yaml‘ class Person attr_accessor :name, :sex, :age, :email def initialize(n,s,a,e) @name=n @sex=s @age=a @email=e end end #创建一个对象 person=Person.new("liubin","male",25,"liubin@huangpuzhuang.com") puts (person.to_yaml) # 打印序列化之后的结果 #从person.yml创建对象 person2 = YAML::load( File.open( ‘person.yml‘ ) ) puts (person2.to_yaml) puts person2.class # 结果是Person puts person2.name person.yml文件: --- !ruby/object:YAML::Person
age: 18 email: xyz@huangpuzhuang.com name: xyz sex: female
注意person.yml中第一行“--- !ruby/object:YAML::Person ”是不可缺的,否则person2.class返回Hash,而person2.name也会出错
程序执行情况如下: C:\>ruby yaml.rb
--- !ruby/object:Person age: 25 email: liubin@huangpuzhuang.com name: liubin sex: male --- !ruby/object:Person age: 18 email: xyz@huangpuzhuang.com name: xyz sex: female Person xyz
总结:yaml东西很多,不是一时半会能学会和讲清楚的,希望我们一起学习。接下来请看我的另一篇文章:http://www./articles/yaml_in_5_minutes.html,也许会更了解yaml。 参考资料:1.ruby语言主页:http://www./ 2.yaml主页:http:/// |
|