从 XML 到 JSON 的转变
Transformation from XML to JSON
是否有一种标准方法可以将具有我选择的结构(方案)的输入 XML 文档转换为具有我选择的结构(方案)的输出 JSON 对象?
如果是输入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.
三个选项都有一些"if there were"。不知是否真的有什么技术可以达到目的
谢谢。
XSLT 的输出不需要是 XML,所以如果您习惯使用它,您可以继续使用它来输出 JSON。
快速搜索显示了这个,这可能是您开始的一个很好的例子:https://github.com/bramstein/xsltjson
它定义了一个 XSLT 函数,该函数将 XML 树作为输入,并生成一个字符串作为输出。查看源代码,基本方法是为每个 JSON 对象、数组和值生成一个包含节点的 XML 树,然后将模板应用于输出 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>
XSLT 3 支持将任何 XML 转换为 https://www.w3.org/TR/xslt-30/#schema-for-json and then allows you to use https://www.w3.org/TR/xslt-30/#func-xml-to-json 中定义的 JSON 的 XML 表示,以将特定的 XML 转换为 JSON.
是否有一种标准方法可以将具有我选择的结构(方案)的输入 XML 文档转换为具有我选择的结构(方案)的输出 JSON 对象?
如果是输入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.
三个选项都有一些"if there were"。不知是否真的有什么技术可以达到目的
谢谢。
XSLT 的输出不需要是 XML,所以如果您习惯使用它,您可以继续使用它来输出 JSON。
快速搜索显示了这个,这可能是您开始的一个很好的例子:https://github.com/bramstein/xsltjson
它定义了一个 XSLT 函数,该函数将 XML 树作为输入,并生成一个字符串作为输出。查看源代码,基本方法是为每个 JSON 对象、数组和值生成一个包含节点的 XML 树,然后将模板应用于输出 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>
XSLT 3 支持将任何 XML 转换为 https://www.w3.org/TR/xslt-30/#schema-for-json and then allows you to use https://www.w3.org/TR/xslt-30/#func-xml-to-json 中定义的 JSON 的 XML 表示,以将特定的 XML 转换为 JSON.