注册本站  论坛  繁體中文

电脑技巧
手机 | MP3 | MP4 | 显卡 | 主板 | 显示器 | 光存储 | 笔记本 | 网络设备 | 移动存储 | 数码相机
键鼠 | CPU | 音箱 | GPS | 电视 | 服务器 | 投影机 | 机箱电源 | 品牌电脑 | 办公打印 |
| 网站首页 | Cisco | Windows | Linux | Java | Dotnet | Oracle | 网页设计 | 平面设计 | 安全 | 软件应用 | 电脑维修 | 办公维修 |
您现在的位置: 电脑技巧 >> Java >> 其他技术 >> Java正文

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

文章来源:51CTO.COM 作者:黄永兵 更新时间:2008-8-23 14:42:23 【 】 【加入收藏

    为Java开发者对YAML文件格式做一个高级介绍,找出它与XML和JSON的不同之处,并检验它的优越性和缺陷。

    所有动态语言(如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

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

  • 上一篇Java:

  • 下一篇Java:
  • 最 新 热 门
     Flash、HTML、Ajax 谁将赢得Web应用之战
     超越XML和JSON:YAML,Java开发人员的新选择
     优秀Java程序员必须了解的GC工作原理
     Java 6 RowSet 使用完全剖析
     pureQuery带注释的方法风格简介
     面向Java开发人员的Scala指南: 实现继承
     Java 6中的性能优化
     Java实现Windows的dir命令
     Java标准类库提供的容器总结
     在Tomcat上开发Web应用如何保证兼容性
    最 新 推 荐
     Flash、HTML、Ajax 谁将赢得Web应用之战
     超越XML和JSON:YAML,Java开发人员的新选择
     优秀Java程序员必须了解的GC工作原理
     Java 6 RowSet 使用完全剖析
     pureQuery带注释的方法风格简介
     面向Java开发人员的Scala指南: 实现继承
     Java 6中的性能优化
     Java实现Windows的dir命令
     Java标准类库提供的容器总结
     手机开发平台指南、教程和资料介绍
    相 关 文 章

    Spring集成Quartz的XML配置
    java中使用jdom生成百度新闻抓取的xml文件
    JAVA中用XML实现INI文件格式的解决方案
    用Eclipse进行XML开发
    Java中关于XML的API惊鸿一瞥
    通过JOX轻松实现JavaBeans与XML的相互转换
    JAVA中用XML实现INI文件格式的解决方案
    Scala 和XML以及简化XML处理
    剖析JSP与XML的交互编程技巧
    hibernate.cfg.xml配置文件的说明

    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告

     

    Copyright 2006-2008 pcjx.com All Rights Reserved
    电脑技巧 版权所有 粤ICP备06059145号 地图
    本网站所有内容未经许可不得转载或做其他使用