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

在WSO2中使用XSLT 1.0实现XML节点分类并生成JSON数组

解决方案:XSLT 1.0实现XML分类转换及对应JSON结构

输入XML示例

假设你的原始XML结构如下:

<Root>
  <Name>
    <id>123</id>
    <CustName>张三</CustName>
  </Name>
  <Name>
    <CustName>李四</CustName>
  </Name>
  <Name>
    <id>456</id>
    <CustName>王五</CustName>
  </Name>
  <Name>
    <CustName>赵六</CustName>
  </Name>
</Root>

XSLT 1.0转换代码

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="/Root">
    <Result>
      <!-- 归集无id节点的CustName到Create -->
      <Create>
        <xsl:for-each select="Name[not(id)]">
          <CustName>
            <xsl:value-of select="CustName"/>
          </CustName>
        </xsl:for-each>
      </Create>
      <!-- 归集有id节点的CustName到Update -->
      <Update>
        <xsl:for-each select="Name[id]">
          <CustName>
            <xsl:value-of select="CustName"/>
          </CustName>
        </xsl:for-each>
      </Update>
    </Result>
  </xsl:template>
</xsl:stylesheet>

转换后的目标XML

<Result>
  <Create>
    <CustName>李四</CustName>
    <CustName>赵六</CustName>
  </Create>
  <Update>
    <CustName>张三</CustName>
    <CustName>王五</CustName>
  </Update>
</Result>

对应JSON结构

经过标准XML转JSON工具转换后,会自动将同名下的多个节点合并为数组,结果如下:

{
  "Result": {
    "Create": {
      "CustName": ["李四", "赵六"]
    },
    "Update": {
      "CustName": ["张三", "王五"]
    }
  }
}

关键逻辑说明

  1. 节点筛选:用Name[not(id)]匹配没有id子节点的Name元素,Name[id]匹配存在id子节点的Name元素,实现分类归集。
  2. 数组合并基础:通过<xsl:for-each>将符合条件的CustName集中放到同一个父节点下,生成多个同名子节点。大多数XML转JSON工具会默认将多个同名子节点转换为JSON数组,满足你的需求。
  3. 兼容性:完全基于XSLT 1.0语法实现,无需依赖扩展功能,适配大多数XSLT处理器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 23:46:00