YAML与XML的比较

61

我读到yaml将在几年后取代xml,因此,请比较每个规范的相关优缺点。


6
你在哪里读到那个的? - Sean Bright
5个回答

94

YAML比较简洁,没有很多的括号,所以信噪比更高,很多人认为这使得阅读和编辑更容易。但是相反的,解析稍微有点困难。

然而最大的区别是XML是一个标记语言,而YAML则是一种数据格式。对于表示简单的分层数据,YAML更具优势,但实际的标记文本则很难表示。

编辑:值得一提的是,作为参考,YAML基本上(尽管不是历史上)是JSON("JavaScript对象表示法")的“清晰”版本,可以大大减少后者的感知线路噪声(括号和大括号)。如果找不到适合特定项目的YAML库,则JSON是一种更广泛支持且具有许多YAML优势的替代方案。


11
我知道这已经过时了,但是我给它打了负一分,因为它甚至没有试图为XML辩护(例如模式和查询只是其中的两个好处)。 - user166390
3
我发帖并不是要“为 XML 辩护”,而是以通俗易懂的方式解释两者的用途。任何知道他们想要运行 XQuery 的人都会比一个三段评论所能传达的更具高层次的 XML 理解,而任何不了解的人也不应该基于这个选择格式。 - Thom Smith
7
就JSON的一些细节而言,YAML本来并不是旨在成为JSON的替代品。实际上,它比JSON更早出现几年,并且事实上是该语言的超集。最初这只是偶然发生的,据我了解只有一些微小的差异,后来才被注意到,并且在规范协作下相互协调。 - Elias Vasylenko
4
JSON不支持注释,这是一个很大的劣势。 - user1633272
1
我看过的几乎所有XML vs JSON比较都提到了缺乏查询功能。现在有许多方法可以查询JSON和其他非结构化数据,甚至mysql也可以实现。 - abalter

33

YAML比XML更简洁,但是YAML只用于数据且技术上不属于标记语言(YAML A'int Markup Language)。


7
除非你使用它的原始名称——“另一种标记语言”(Yet Another Markup Language)。https://yaml.org/spec/history/2001-08-01.html - Matthew Whited
1
@MatthewWhited,除非你使用它的实际名称,否则这个答案是指https://yaml.org/。 - Дмитрий Кулешов

17

XML的最大优点之一是具有验证选项(括号中的意见):

  • Schematron(非常强大)
  • W3C XML Schema(坚实可靠)
  • DTD(不太好看(甚至不是xml))
  • XSD(最常用)

并且具有查询数据的选项:

  • XPath(在2.x版本中更好)
  • XQuery(大多数情况下已不再使用)

对于大多数情况来说,YAML可能是最容易阅读的。

JSON相当容易阅读,它是JavaScript存储数据的方式(如果我错了请纠正我)。 当我编写自己的类C编程语言以解析值时,我真的很喜欢使用JSON。


+1 人们谈论JSON/YAML时往往会忘记模式和查询。我采用混合方法,在我的Web服务中将数据表现为JSON,但在内部处理XML。如果遵守一些一致性规则,这种方法效果还不错。 - user166390
此外,不要忘记 XSLT - 尽管 1.0/1.1 有点无聊,2.0 不受 Microsoft 支持,但它们可以非常干净地解析 XML 文档以进行进一步处理。 - user166390
4
更糟糕的是,人们往往忘记这些工具也适用于JSON和YAML(尽管根据快速的谷歌搜索,似乎针对YAML的查询工具还处于初级阶段)。拥有良好的处理令人痛苦格式的工具,只能证明在出现类似的 less painful formats 的工具之前,继续使用它是合理的。 - Andy
1
不错的观点,但我想指出yQuery和yPath在某个时候是可以制作的,如果你想制作yQuery或yPath,那么它们尚不存在的事实往往是一个重大优势。 - CommaToast

10

我认为 YAML 的主要优点是它更容易被人类阅读。与 XML 相比,我更喜欢 YAML,因为它已经内置了某些数据结构(字典和数组)的概念。

然而相对于 XML,YAML 解析的库支持并不如XML丰富,所以在实现 XML 的一个主要用途 -- 应用程序间通信时,它很难被使用。


9

我并不十分相信YAML会成为未来的趋势。虽然我使用过它,并且它对我来说很有效,但我经常听到有人抱怨规范。其中最新的一篇是Why I Don't Like YAML


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接