You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:使用XSLT 2.0将XML标签内的JSON解析为独立XML标签

XSLT 2.0 实现指定JSON到XML的转换

需求回顾

输入是包裹在<code>标签内的JSON字符串,结构包含successful字段、空errors数组和elements对象数组;输出需为<code>标签包裹的XML,保留<successful>标签,每个elements数组元素对应一个<elements>标签(内含<code>和<channelProcessingTime>子标签),忽略errors数组。

输入示例

<code>{"successful": true, "errors": [], "elements": [{"code": "ORD-001", "channelProcessingTime": 89}, {"code": "ORD-002", "channelProcessingTime": 124}]}</code>

预期输出

<code>
  <successful>true</successful>
  <elements>
    <code>ORD-001</code>
    <channelProcessingTime>89</channelProcessingTime>
  </elements>
  <elements>
    <code>ORD-002</code>
    <channelProcessingTime>124</channelProcessingTime>
  </elements>
</code>

完整XSLT代码

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:json="http://www.w3.org/2005/xpath-functions">
  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="/">
    <code>
      <!-- 提取输入<code>标签内的JSON字符串 -->
      <xsl:variable name="json-content" select="/code/text()"/>
      <!-- 将JSON转换为标准中间XML结构 -->
      <xsl:variable name="converted-xml" select="json-to-xml($json-content)"/>

      <!-- 直接复制successful节点 -->
      <xsl:copy-of select="$converted-xml/*[@key='successful']"/>

      <!-- 遍历elements数组的每个元素,生成目标结构 -->
      <xsl:for-each select="$converted-xml/*[@key='elements']/*">
        <elements>
          <code><xsl:value-of select="*[@key='code']"/></code>
          <channelProcessingTime><xsl:value-of select="*[@key='channelProcessingTime']"/></channelProcessingTime>
        </elements>
      </xsl:for-each>
    </code>
  </xsl:template>
</xsl:stylesheet>

代码说明

  1. JSON转XML核心处理:使用XSLT 2.0内置的json-to-xml()函数,将JSON字符串转换为带有key属性的中间XML结构(比如JSON的successful字段对应<boolean key="successful">true</boolean>)。
  2. 保留successful字段:通过@key='successful'定位节点,直接复制到输出中。
  3. 处理elements数组:遍历elements数组对应的子节点(数组的每个元素对应一个XML元素),为每个元素生成<elements>标签,并提取内部的code和channelProcessingTime字段值。
  4. 忽略errors数组:代码中未对errors节点做任何处理,自然实现忽略效果。

内容的提问来源于stack exchange,提问作者Khan Vaqui

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 22:00:17