|
为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风格的语法来跳出空格流,它的创始人将其形容为“为所有编程语言提供人性化的数据序列化标准”,以我的经验来看,其重点是人性化。 JFrame: 侧边栏1:YAML和标签 随你喜欢,你可以在任何节点使用JSON风格语法或混合语法,例如,上面的例子可改为: JFrame: 在底层节点(即它们没有子节点,正如你猜测的那样,井号键在YAML中是用来注释的)切换使用JSON风格语法显得特别有用。 YAML结构组件 前面已经看了一个简单的YAML例子,下面让我们一起来了解一下YAML的结构:hash,list,和block literal。 hash(散列) 通过缩进子段和在关键字与值之间使用冒号(:)来分割实现hash的创建,如: JFrame: 还有一种方法就是使用与JSON兼容的大括号语法({})语法,每一对关键字/值使用逗号(,)分割,如: JFrame: {defaultCloseOperation: JFrame.EXIT_ON_CLOSE, title: Test, Frame, width: 800, height: 400} list(清单) 通过在每个list元素前放一个减号(-)来创建list,与空格缩进一起构成了YAML的基石: components: 还有一种方法就是使用JSON兼容的方括号([])语法,如: components: [JTextArea, JButton] block literal(文字块) 这是YAML的亮点,特别是与XML相比,它的CDATA显得相当简陋,block literal可以将大块文本细致地插入文件中,你可以使用竖线(|)指令在你的文本中保留新行,如: text: | YAML编译器将会从第一行的第一个文本字符开始编译(并丢掉所有的缩进空格),但是会在你的文本中保留新行。 另外,你还可以使用大于符号(>)告诉YAML编译器给所有新行加上条纹,并将输入的文本作为一个长行处理: text: > 除了这两个指令之外,你还可以使用竖线和加号(|+),它给位于前面的空格加上条纹,保留新行和末尾的空格,还可以使用大于号和减号(>-),它给所有的空格加上条纹。 |