【问题标题】:When would you use XML over JSON for Ajax?什么时候将 XML over JSON 用于 Ajax?
【发布时间】:2009-01-26 04:41:16
【问题描述】:

最近,包括我在内的许多程序员都将 X 从 AJAX 中取出,并默认使用 JSON 作为协议格式。但是,我正在尝试将 XML 更适合作为协议格式的一些地方考虑,其中不包括 SOAP(因为理论上 SOAP 无论如何都可以使用 JSON 完成)。

注意:我喜欢 XML 用于许多其他目的,所以它不是一般的 XML 与 JSON,我特别关心 AJAX 的传输协议。

【问题讨论】:

标签: xml ajax


【解决方案1】:

这个问题和When to prefer JSON over XML?很像

无论如何,我同意投票最高的答案:

除非需要使用 XML,否则我会使用 JSON。如果库在您的上下文中可用,那么它更易于理解,并且(因为它需要较少的配置开销)更容易编程以进行读写,并且它们现在非常普遍。

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

另一方面,XML 适用于...

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

这也是取自上面的问题,本质上是问这个问题的反面。

【讨论】:

    【解决方案2】:

    为了将所有内容放在一起,以便于查找,而不是对数据进行规范化,我在重复 Paolo Bergantino 指出的另一个问题的部分答案,这显示了 XML 的好处:

    Favor XML over JSON when any of these is true:

    • 您需要消息验证
    • 您正在使用 XSLT 您的消息包含大量标记文本
    • 您需要与以下环境进行互操作 不支持 JSON

    ——罗伯特·罗斯尼

    You need to process the data on the client, and you can leverage XSL for that. Chances are the XML + XSL chain will work faster than JSON + JavaScript especially for big chunks of data. One good case is to convert the data into an HTML snippet.

    -尤金·拉祖特金

    I'd choose XML over JSON if I need to validate the chunk of incoming data, because XML nativly supports this through XSD.

    -低滑翔机

    However JSON is missing both

    • 属性
    • 命名空间

    -空

    【讨论】:

      【解决方案3】:

      Ajaxian 写了关于这个主题的文章 - JSON vs. XML: The Debate

      此外,我不确定其重要性,但有些实例可能需要标签上的属性,而您不能真正将属性放在 JSON 条目上。不过,我可能还差得很远——JSON/XML 不是我最擅长的领域。

      【讨论】:

      • 我没有对你投反对票,但我的猜测是你给出了一个支持 JSON 的“明显”示例。当这个问题是关于支持 XML 的东西时?
      • @Robert - 你是对的。我已经修改为更合适的帖子。
      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        对我来说,我认为在 AJAX 中使用 XML 的最大缺点是您通常必须对其进行解析并以某种方式转换它,而您不必对 JSON 做同样的事情,因为格式是原生于 JavaScript。当您将更大的传输成本添加到解析和转换中时,老实说,我想不出在 AJAX 中使用 XML 而非 JSON 的充分理由,尽管我确实将 XML 用于许多其他事情。

        【讨论】:

        • 嗯? var doc = req.responseXML。然后在 doc 上使用 DOM 函数。
        • JSON 不是 JavaScript 原生的——你仍然需要解析它。看起来您不必这样做,因为如果您将其加载到
        猜你喜欢
        • 1970-01-01
        • 2017-12-15
        • 2010-10-08
        • 1970-01-01
        • 2010-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-28
        相关资源
        最近更新 更多