从JSON生成具有重复标记的XML



我使用Nodejs中的xmlBuilder库从准备好的相应JSON创建XML。

我首先创建JSON结构,然后将其转换为XML。Javascript是编码语言。

需要创建以下XML结构。

<A>TestA</A>
<B>TestB</B>
<C>TestC1</C>
<C>TestC2</C>
<D>TestD</D>

由于重复的标签(标签C(,我无法做到这一点。请提出解决方案!

{
A: TestA,
B: TestB,
C: // unclear here
D: TestD
}

在XSLT3.0中(例如使用SaxonJS(,您可以转换此JSON:

{
"A": "TestA",
"B": "TestB",
"C": ["TestC1", "TestC2"]
"D": "TestD"
}

到这个XML:

<doc>
<A>TestA</A>
<B>TestA</B>
<C>TestA</C>
<C>TestA</C>
<D>TestA</D>
</doc>

带有逻辑:

<xsl:transform 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:map="http://www.w3.org/2005/xpath-functions.map"
version="3.0" 
expand-text="yes">
<xsl:template name="xsl:initial-template">
<doc>
<xsl:variable name="json" select="parse-json('my-input.json')"/>
<xsl:for-each select="sort(map:keys($json))">
<xsl:element name="{.}">{$json(.)}</xsl:element>
</xsl:for-each>
</doc>
</xsl:template>
</xsl:transform>

与某些转换库相比,使用XSLT3.0在JSON和XML之间进行转换的工作量稍大,但其优点是可以完全控制输出。

最新更新