是否有一种标准方法可以将输入XML文档转换为我选择的结构(方案)的输出XML文档,并使用我选择的结构(方案)?
如果是从输入XML到输出XML的转换,我会使用XSLT。
我可以想象以下三种方法:
从XML直接转换为JSON,即描述转换XML的方法 - > JSON就像XSLT描述的转换XML - > XML。
我知道JSONML。它是任意XML文档的无损JSON表示。但是,生成的JSON对象没有我选择的结构。如果有一些标准的方法来描述转换JSON - > JSON,我会链XML - > JSONML和JSONML - > JSON。
如果与JSONML相反(让我们称之为" XMLSON",即任意JSON对象的无损XML表示法),我会链接XML - > XMLSON(通过XSLT)和XMLSON - > JSON。
所有三个选项都有一些"如果有"。我想知道是否真的有一些技术可以实现这个目标。
感谢。
答案 0 :(得分:2)
XSLT的输出不需要是XML,因此如果您习惯使用它,可以继续使用它来输出JSON。
快速搜索显示了这一点,这可能是您开始的一个很好的例子:https://github.com/bramstein/xsltjson
它定义了一个XSLT函数,它将XML树作为输入,并生成一个字符串作为输出。查看源代码,基本方法是生成一个XML树,其中包含每个JSON对象,数组和值的节点,然后将模板应用于输出JSON语法本身的模板。
例如,要输出JSON数组,它首先生成<json:array>...</json:array>
的XML节点,然后应用此模板:
<xsl:template match="json:array" mode="json">
<xsl:variable name="values">
<xsl:apply-templates mode="json"/>
</xsl:variable>
<xsl:text/>[<xsl:text/>
<xsl:value-of select="string-join($values/value,',')"/>
<xsl:text/>]<xsl:text/>
</xsl:template>
答案 1 :(得分:2)
XSLT 3支持将任何XML转换为https://www.w3.org/TR/xslt-30/#schema-for-json中定义的JSON的XML表示形式,然后允许您使用https://www.w3.org/TR/xslt-30/#func-xml-to-json将该特定XML转换为JSON。