zoukankan      html  css  js  c++  java
  • 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/

    勿忘初心,放得始终
  • 相关阅读:
    Java RandomAccessFile与MappedByteBuffer
    Apache httpClient
    gitolite migration to bitbucket
    logback身份证脱敏
    身份证号码-正则表达式
    webservice-整理
    Java高编译低运行错误(ConcurrentHashMap.keySet)
    IIS(互联网信息服务)
    ASP.NET MVC:UrlHelper.cs
    TortoiseSVN 和 VisualSVN
  • 原文地址:https://www.cnblogs.com/cherishry/p/5674537.html
Copyright © 2011-2022 走看看