何时使用XML而不是JSON进行Ajax?

12

最近,许多程序员(包括我)已经从AJAX中去掉了X,并默认使用JSON作为协议格式。然而,我正在尝试考虑一些地方,在那里XML作为协议格式更合适,而不包括SOAP(因为SOAP理论上也可以用JSON完成)。

注意:我非常喜欢XML用于许多其他目的,所以这不是关于XML和JSON在一般情况下的比较,我特别关注的是AJAX的传输协议。


https://dev59.com/O3RC5IYBdhLWcg3wW_pk - mmcdole
它很相似,但不是重复的。 - Paolo Bergantino
@Simucal 我有点同意你关闭这个问题(尽管这是我的问题),但这里的重点是要看另一面,硬币的不太被注意到的一面,在我看来。 - Robert Gould
5个回答

15

这个问题与何时选择JSON而不是XML?非常相似。

无论如何,我同意那里得票最高的答案:

除非必须使用XML,否则我使用JSON。它更简单易懂,并且(因为需要较少的配置开销)如果库在您的上下文中可用,编写读写程序更容易,并且现在它们已经非常普遍了。

当亚马逊首次将其目录公开为Web服务时,他们提供了JSON和XML两种格式。大约90%的实施者选择了JSON。

另一方面,XML适用于以下情况...

  • 你需要消息验证
  • 你正在使用XSLT
  • 您的消息包含大量标记文本
  • 您需要与不支持JSON的环境进行交互
  • 您需要属性或命名空间

这也来自上面提到的问题,该问题实质上是问相反的内容。


4
为了将内容保持在一起,以便更容易查找,而不是对数据进行规范化,我正在重复Paolo Bergantino指出的其他问题答案的一些部分,这些部分显示了XML的好处:
请优先考虑使用XML,如果满足以下任何条件: -您需要消息验证 -您正在使用XSLT且消息包含大量标记文本 -您需要与不支持JSON的环境进行交互
-Robert Rossney
如果您需要在客户端处理数据,并且可以利用XSL进行处理,那么应该优先选择XML。对于大块数据而言,XML + XSL链通常比JSON + JavaScript更快。其中一个很好的情况是将数据转换为HTML片段。
-Eugene Lazutkin
如果我需要验证传入数据的块,则会选择XML,因为XML通过XSD本地支持此功能。但JSON缺少属性和命名空间。

2

Ajaxian写过这个话题 - JSON与XML:辩论

此外,虽然我不确定其重要性,但某些情况可能需要在标记上使用属性,而你不能真正在JSON条目上放置属性。 我可能完全错了 - JSON / XML不是我最擅长的领域。


我没有给你点踩,但我猜测你举了一个明显有利于JSON的例子。而这个问题是关于有利于XML的东西? - Robert Gould
@Robert - 你说得对。我已经修改了帖子,使其更加合适。 - Sampson

1
如果您要在客户端执行XSLT转换。

0
对于我而言,我认为在AJAX中使用XML的最大缺点是通常需要以某种方式对其进行解析和转换,而不必像JSON一样进行相同的操作,因为JSON格式是JavaScript本身支持的。当您将更大的传输成本加入到解析和转换中时,我真的想不出为什么要在AJAX中使用XML而不是JSON,尽管我当然会在许多其他事情上使用XML。

嗯?var doc = req.responseXML。然后在doc上使用DOM函数。 - Zach
JSON不是JavaScript的本地格式 - 你仍然需要解析它。只是因为如果你在<script>标签中加载它,浏览器会自动解析它,所以看起来好像不需要解析。否则你需要使用eval()或者使用一个JSON库。 - Chii

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