从XML到JSON的转换

3
有没有标准的方法将我选择的结构(方案)的输入XML文档转换为具有我选择的结构(方案)的输出JSON对象?
如果需要从输入XML到输出XML进行转换,我会使用XSLT。
我可以想象以下三种方法:
1. 直接从XML转换为JSON,即描述转换XML-> JSON的方法,就像XSLT描述转换XML-> XML一样。 2. 我知道JSONML,它是任意XML文档的无损JSON表示。 但是,生成的JSON对象没有我选择的结构。 如果存在某种标准的方法来描述转换JSON-> JSON,我将连接XML-> JSONML和JSONML-> JSON。 3. 如果有与JSONML相反的东西(我们称之为“XMLSON”,即任意JSON对象的无损XML符号),我将通过XML-> XMLSON(通过XSLT)和XMLSON-> JSON进行连接。
这三个选项都有一些“如果存在”。 我想知道是否真的有一些技术来实现目标。
谢谢。
2个回答

4

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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接