【问题标题】:Converting JSON to XML using XSLT使用 XSLT 将 JSON 转换为 XML
【发布时间】:2016-07-20 01:51:00
【问题描述】:

以下是我的要求:

应用程序 A 正在创建基于其 Java Bean 的 JSON 并将其发送到我的应用程序。 我必须将此 JSON 转换为 XML(XSD 与我的 JSON 结构完全不同)并发送到应用程序 B。

解决方案 1) 我目前正在使用 json.org 库将此 json 转换为 xml。然后使用 Apache-xalan 和 XSL 样式表,我将其转换为 App B 要求的 xml 格式。

解决方案 2) 将此 json 转换为 Java Bean (JB1)。然后根据应用程序 B 所需的 xml 结构将此 JB1 转换为另一个 Java Bean (JB2)。然后将 JB2 转换为 XML应用 B。

解决方案 3) 使用 Apache Xalan 和 Xerces 解析输入的 json 并在 Java 本身中生成 XML,而不使用 XSL。

哪种方法更好(代码简单,吞吐量)?随着 JSON 变得越来越复杂,解决方案 1 是否易于使用?请建议除了这3个之外是否还有更好的方法?

【问题讨论】:

    标签: json xml xslt xsd xalan


    【解决方案1】:

    XSLT 3.0 提供了一个内置的 json-to-xml() 函数。获得 XML 后,您可以轻松地将其转换为所需的格式。它在 Saxon 9.7(PE 或更高版本)中实现,我相信 Exselt。

    【讨论】:

    【解决方案2】:

    解决方案 1: 是的。这是简单和复杂的 JSON 以及简单或复杂的目标 XML 的常规和最佳路径。

    解决方案 2: 不。没有理由将 Java Beans 作为一种中间形式引入,尤其是在您不需要 Java Beans 的情况下。此选项不必要地引入了转换和编组的复杂性。

    解决方案 3: 不。Xalan 和 Xerces 都不是为解析 JSON 而设计的;它们旨在解析 XML。

    【讨论】:

      【解决方案3】:

      有一些示例程序可以将 JSON 文档映射到等效的 XML 文档并返回;我使用我称为 JinX(XML 中的 JSON)的 XML 词汇编写了一个作为 Liberty 对 json-p (javax.json) 支持的演示。如果需要,它可以用作包裹在 XSLT 周围的前/后处理器。

      更好的解决方案是可能的——例如,重新定义 XSLT 以在 JSON 树上运行——但需要更多的工作。

      【讨论】:

        【解决方案4】:

        JSON 是纯粹而简单的“一种通信 协议”。换句话说,“它特别存在(!)允许通过“HTTP(S)协议”在一些客户端和一些主机之间传送'任意(JavaScript)数据结构'。

        因此:“它不是(!) XML,”,因此绝不能被视为“XSLT 的适当输入!”

        “你不能把苹果和橙子混在一起!”

        如果您希望将“XSLT”技术应用于“JSON 派生”输入(根据定义,即“数据结构 ...”),那么您必须 首先,然后“通过任何合适的方式”将该数据结构转换为 XML。

        【讨论】:

        • 在解决方案 1 中,我将 json 转换为 xml,然后将此 xml 传递给 XSLT 技术。这与您所说的方法相同吗?
        • 在似乎提出一种近乎宗教的方法的帖子中使用“你应该”似乎很合适。我们是工程师;如果我们必须将 3 厘米的塑料流出管连接到 6 英寸的排水管,让我们找到解决问题的最佳方法,而不是告诉人们不要这样做。
        • 我的意思很简单:JSON 不是 XML,因此它与 XSLT 没有任何关系。 不过,话虽如此, XML 有时被用作传输格式,理论上 可以直接使用 XSLT 进行转换。
        • 这不是答案,但我不会投反对票。 Web 服务现在正在混合 REST 与 SOAP 对话并返回。由于最新的 XSLT 3.0 规范包含 parse-json() ,因此他们认为这是有必要的。您的观点不会转化为答案。
        • 同意 MK 的观点,这是一个宗教声明。如果 JSON 人员能够克服自己并接受 JSON 和 XML Infoset 之间存在简单而明显的映射,他们将立即能够利用 XML 中的所有工具工作,而不必重新发明他们自己的方言。相同的基本解决方案。但是他们非常害怕无法为他们的新语法辩护,以至于他们坚持认为它必须被视为不同的东西。我认为这使 JSON 世界至少花费了几年的追赶发展,加上失去与 XML 的协同作用。真的很伤心。\
        猜你喜欢
        • 2020-01-26
        • 2023-03-30
        • 1970-01-01
        • 2019-12-28
        • 1970-01-01
        • 2018-12-04
        • 2012-10-12
        • 2021-07-22
        相关资源
        最近更新 更多