2017-10-17 186 views
0

我有一个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://stackoverflow.com/a/46709294/8760211

+0

有很多方法可以将特定的XML文档表示为JSON,所以只需告诉我们您希望JSON输出确实能够解释需求。 XSLT 3.0支持https://www.w3.org/TR/xpath-functions-31/#func-xml-to-json将特定的XML格式转换为JSON,所以如果你想使用内置的支持您需要将当前的XML格式转换为'xml-to-json'函数所需的格式。 –

+0

嗨马丁, 再次感谢您最后的支持和当前评论。 实际上,我必须转换XML1,你知道,像这样(XML2):https://stackoverflow.com/q/46805848/8760211 经过一些处理步骤后,JSON文件应该被转换回原始XML格式(XML1):https://stackoverflow.com/q/46805848/8760211 我希望杰克逊能够像迈克尔杰克逊国王(RIP)那样完成这项工作。 我可以开发出好的Java应用程序,但XSLT对我来说是一个超现实的宇宙! 在此先感谢您的任何建议。 Thomas – ThomasMuller

回答

1

有三种方法可以做到这一点。 (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)您可以使用文本输出方法写的JS​​ON“手动”。

你选择哪一个取决于数据来自何处。

+0

嗨Michael, 非常感谢您的回答。 我希望有一个更简单的方法来做到这一点,因为真正的XML必须被转换,它可能具有除映射表中定义的以外的{200,201,500,...}类型的记录: https ://stackoverflow.com/a/46709294/8760211 ' ...' 这些特殊的自定义记录应该在JSON中转换,并且不做任何更改。 我不知道这些自定义记录的内部结构。 待续... – ThomasMuller

+0

我只知道外壳,更确切地说像以下这些记录: '<记录类型=“200”> ... <记录类型=“500”> ...' 我使用Jackson在Java级别进行转换。 结果是JSON,其中属性显示为元素而不是其他值的属性。 对于这个星球上的开发人员来说,这似乎成为一个艰难的一天:-) 再次感谢 Thomas – ThomasMuller

+0

嗨迈克尔, 你是对的! 我不得不在问题中强调自定义元素的存在。 对不起,这些细节。 我试图将任务拆分为更小的部分。 – ThomasMuller