以下是我的要求:
应用程序A正在基于Java Bean创建JSON并发送到我的应用程序。 我必须使用此JSON并将其转换为XML(XSD与我的JSON结构完全不同)并发送到应用程序B.
解决方案1)我目前正在使用json.org库将此json转换为xml。然后使用Apache-xalan和XSL样式表,我将按照App B的要求将其转换为xml格式。 / p>
解决方案2)将此json转换为Java Bean(JB1)。然后根据Application B所需的xml结构将此JB1转换为另一个Java Bean(JB2)。然后将JB2转换为XML for app B。
解决方案3)使用Apache Xalan和Xerces解析输入json,并在不使用XSL的情况下在Java中创建XML。
哪种方法更好(代码简单,吞吐量)?随着JSON变得越来越复杂,使用解决方案1是否容易?请建议除了这3个以外是否有更好的方法?
答案 0 :(得分:2)
XSLT 3.0提供了内置的json-to-xml()函数。获得XML后,您可以轻松地将其转换为所需的格式。它在Saxon 9.7(PE或更高版本)中实现,我相信Exselt。
答案 1 :(得分:1)
解决方案1:是的。这是简单和复杂JSON以及简单或复杂目标XML的传统和最佳途径。
解决方案2:否。没有理由将Java Bean作为中间形式引入,特别是如果您对Java Bean没有其他需求。此选项不必要地引入了转换和编组复杂性。
解决方案3:否.Xalan和Xerces都不是为解析JSON而设计的;它们旨在解析XML。
答案 2 :(得分:0)
有一些示例程序可以将JSON文档映射到等效的XML文档中并返回;我写了一个作为Liberty对json-p(javax.json)的支持的演示,使用我称为JinX(XML中的JSON)的XML词汇表。如果需要,它可以用作围绕XSLT的前/后处理器。
更好的解决方案是可行的 - 例如,重新定义XSLT以在JSON树上运行 - 但需要更多的工作。
答案 3 :(得分:-2)
JSON 是纯粹而简单的“通信协议”。换句话说,“它特别存在(!)允许'任意(JavaScript)数据结构'在某些客户端和某些主机之间传送,”超过“HTTP(S)协议。”
因此:“它不是(!) XML,”因此绝不能被视为“对XSLT的适当输入!”
“你不应该混合苹果和橘子!”
如果您希望将“XSLT”技术应用于“JSON派生”输入(根据定义,“数据结构......”)那么您必须< / strong>首先,“通过任何合适的方式”,将该数据结构转换为XML。