XSLT 3.0,将XML转换为JSON
我有一个XML和一个XSLT。 转换工作目前很不错。XSLT 3.0,将XML转换为JSON
如何扩展此XSLT以获得JSON结果?
它甚至可以是一个单独的XSTL,用于将第一个XSLT的XML结果转换为JSON。 然后我会用Java链接在一起。
任何建议将不胜感激。
在此先感谢 托马斯
个XML(原件及改造后): XSLT, Renaming Elements using mapping table based on Attribute's value
XSLT 3.0: https://*.com/a/46709294/8760211
有三种方法可以做到这一点。 (1)您可以使用json的XML模型构造XML文档,然后使用xml-to-json()对其进行格式化。例如,构建输出{“一”:1,“B”:2}你将第一构造的XML文档
<fn:map>
<fn:number key="a">1</fn:number>
<fn:number key="b">2</fn:number>
</fn:map>
这给你创建具有精确控制的任何JSON输出的能力。 (2)您可以构造一个由映射和数组组成的数据结构,然后使用JSON输出方法将其序列化。例如,你可以构建:
<xsl:map>
<xsl:map-entry key="'a'" select="1"/>
<xsl:map-entry key="'b'" select="2"/>
</xsl:map>
(3)您可以使用文本输出方法写的JSON“手动”。
你选择哪一个取决于数据来自何处。
嗨Michael, 非常感谢您的回答。 我希望有一个更简单的方法来做到这一点,因为真正的XML必须被转换,它可能具有除映射表中定义的以外的{200,201,500,...}类型的记录: https ://*.com/a/46709294/8760211 '
我只知道外壳,更确切地说像以下这些记录: ' ... ...' 我使用Jackson在Java级别进行转换。 结果是JSON,其中属性显示为元素而不是其他值的属性。 对于这个星球上的开发人员来说,这似乎成为一个艰难的一天:-) 再次感谢 Thomas – ThomasMuller
嗨迈克尔, 你是对的! 我不得不在问题中强调自定义元素的存在。 对不起,这些细节。 我试图将任务拆分为更小的部分。 – ThomasMuller
有很多方法可以将特定的XML文档表示为JSON,所以只需告诉我们您希望JSON输出确实能够解释需求。 XSLT 3.0支持https://www.w3.org/TR/xpath-functions-31/#func-xml-to-json将特定的XML格式转换为JSON,所以如果你想使用内置的支持您需要将当前的XML格式转换为'xml-to-json'函数所需的格式。 –
嗨马丁, 再次感谢您最后的支持和当前评论。 实际上,我必须转换XML1,你知道,像这样(XML2):https://*.com/q/46805848/8760211 经过一些处理步骤后,JSON文件应该被转换回原始XML格式(XML1):https://*.com/q/46805848/8760211 我希望杰克逊能够像迈克尔杰克逊国王(RIP)那样完成这项工作。 我可以开发出好的Java应用程序,但XSLT对我来说是一个超现实的宇宙! 在此先感谢您的任何建议。 Thomas – ThomasMuller