今天是:
首 页信息查询网站SEO查询工具CSS编辑器建站素材
网海拾贝,电脑资讯,电脑快报,it资讯,网站建设资讯,教程基地
软件新闻
操作系统
Vista Winxp Win2003 Linux Windows综合
工具软件
系统工具 媒体工具 网络工具 杀毒软件 聊天
软件开发
C教程 C++ Java C# ASP.NET JSP PHP
数据库
Oracle MySQL DB2 SQL Server Sybase
安全
网络 病毒
办公应用
Word Excel Powerpoint Outlook 其他
平面设计
Photoshop Fireworks Coreldraw Flash Illustrator 3dsmax
网站运营
网站运营 网站优化 网站策划 策划书下载 建站心得 站长故事 网站盈利 网页制作 网页特效 建站素材 免费资源 QQ频道
  当前位置:首 页 >> 软件开发 >> java教程 >> 超越XML和JSON:YAML,Java开发人员的新选择

超越XML和JSON:YAML,Java开发人员的新选择

  发布于2008-08-18 15:10 来源:51cto

超越XML和JSON:YAML,Java开发人员的新选择

超越XML和JSON:YAML,Java开发人员的新选择(一)

所有动态语言(如Ruby,Groovy,Python等)及其相关的框架(如Ruby on rails)百家争鸣,尽管阅读本文的大部分Java开发者每天的大多数工作都是处理纯粹的Java,且未来多年都将如此,但这并不意味着他们不能学习新的知识,在他们的兵器库中添加新的兵器,本文介绍YAML(YAML不是标记语言的简写)文件格式(使用Ruby on rails框架进行讲解,因为它所有的配置文件都是使用的YAML)以及它与XML和JSON的区别,最后讨论了YAML的优势和缺点。

空格缩进和JSON选项

YAML文件格式主要集中于空格缩进的概念,它用于指出数据的层次结构 – 而不是使用XML嵌套标记或JSON的大括号({})和方括号([]),实际上,它是JSON的一个超集,因此,在使用的时候,你可能需要采用JSON风格的语法来跳出空格流,它的创始人将其形容为“为所有编程语言提供人性化的数据序列化标准”,以我的经验来看,其重点是人性化。
下面是一个使用空格缩进的YAML样例,创建YAML文件时不宜使用固定宽度字体,因为空格是很关键的。(参考侧边栏1:YAML和标签

JFrame:
    defaultCloseOperation: JFrame.EXIT_ON_CLOSE
    title: Test Frame
    width: 800
    height: 400
    components:
        - JTextArea:
             name: textArea1
             text: |
               This is a really long text
               that spans multiple lines (but preserves new lines).
               It does not need to be escaped with special brackets,
               CDATA tags, or anything like that
        - JButton:
             name: button2
             text: Button 2

侧边栏1:YAML和标签
基于空格缩进的任一文件格式最常见的问题之一是如何解释标签,在这个YAML例子中,答案相当简单:它不支持标签。使用标签字符缩进代替空格将会导致处理异常。

随你喜欢,你可以在任何节点使用JSON风格语法或混合语法,例如,上面的例子可改为:

JFrame:
    defaultCloseOperation: JFrame.EXIT_ON_CLOSE
    title: Test Frame    width: 800
    height: 400
    components:
        - JTextArea:
             name: textArea1
             text: |
               This is a really long text
               that spans multiple lines (but preserves new lines).
               It does not need to be escaped with special brackets,
               CDATA tags, or anything like that
        - JButton: {name: button2, text: Button 2} #JSON风格语法

在底层节点(即它们没有子节点,正如你猜测的那样,井号键在YAML中是用来注释的)切换使用JSON风格语法显得特别有用。

YAML结构组件

前面已经看了一个简单的YAML例子,下面让我们一起来了解一下YAML的结构:hash,list,和block literal。

hash(散列)

通过缩进子段和在关键字与值之间使用冒号(:)来分割实现hash的创建,如:

JFrame:
    defaultCloseOperation: JFrame.EXIT_ON_CLOSE
    title: Test Frame
    width: 800
    height: 400

还有一种方法就是使用与JSON兼容的大括号语法({})语法,每一对关键字/值使用逗号(,)分割,如:

JFrame: {defaultCloseOperation: JFrame.EXIT_ON_CLOSE, title: Test, Frame,
 width: 800, height: 400}

list(清单)

通过在每个list元素前放一个减号(-)来创建list,与空格缩进一起构成了YAML的基石:

components:
        - JTextArea
        - Jbutton

还有一种方法就是使用JSON兼容的方括号([])语法,如:

components: [JTextArea, JButton]

block literal(文字块)

这是YAML的亮点,特别是与XML相比,它的CDATA显得相当简陋,block literal可以将大块文本细致地插入文件中,你可以使用竖线(|)指令在你的文本中保留新行,如:

text: |
   This is a really long text
   that spans multiple lines (but preserves new lines).
   It does not need to be escaped with special brackets,
   CDATA tags, or anything like that

YAML编译器将会从第一行的第一个文本字符开始编译(并丢掉所有的缩进空格),但是会在你的文本中保留新行。

另外,你还可以使用大于符号(>)告诉YAML编译器给所有新行加上条纹,并将输入的文本作为一个长行处理:

text: >
   This is a really long text
   that spans multiple lines (but preserves new lines).
   It does not need to be escaped with special brackets,
   CDATA tags, or anything like that

除了这两个指令之外,你还可以使用竖线和加号(|+),它给位于前面的空格加上条纹,保留新行和末尾的空格,还可以使用大于号和减号(>-),它给所有的空格加上条纹。



中查找“超越XML和JSON:YAML,Java开发人员的新选择”更多相关内容

中查找“超越XML和JSON:YAML,Java开发人员的新选择”更多相关内容



上一篇:Java入门需掌握的基本概念
下一篇:Javascript闭包
最近更新 赞助商
·提高Java代码重用性的三个方法10-15
·java语言中异常错误恢复处理的异常类型09-05
·Javascript闭包08-22
·超越XML和JSON:YAML,Java开发人员的新..08-18
·Java入门需掌握的基本概念01-04
·Java中流的概念01-04
·Java中的main()方法详解12-06
·Java的指针与垃圾回收11-04
·Java中字符集编码的问题11-04
·Java程序性能和速度优化实例11-04
·java编程的文件操作方法11-04

共有评论 0 条 网友评分 0分 查看所有评论


发表评论→ 学而不思则罔,思而不学则殆,请大胆发表你的见解。

输验证码:

您对此篇文章的评分:1分 2分 3分 4分 5分

  • 站内搜索
关键词

搜索方式

搜索范围

精确匹配
Baidu
网站首页 - 关于本站 - 网站地图 - 广告合作 - 站点声明 - RSS订阅 - 联系我们
Copyright © 2005 网海拾贝.[新ICP备05003216号]. All Rights Reserved .