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

XSLT 1.0分组重排XML节点 解决XML转JSON同类型节点丢失问题

XSLT 1.0 交错节点重排方案

你所用的xml-to-json转换逻辑默认对连续同名节点做数组合并,交错排列的同名节点会被判定为重复键,最终仅保留最后一个值。提前将同类型节点聚合排列即可解决该问题,无需修改原有JSON转换脚本,可直接使用下述XSLT 1.0脚本做前置结构转换:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:ns="http://www.w3.org/furniture">

    <!-- 身份模板:全量复制原XML的节点、属性、文本、命名空间,保留原始结构 -->
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <!-- 自定义DivideDetails节点的子节点输出顺序 -->
    <xsl:template match="ns:DivideDetails">
        <xsl:copy>
            <!-- 保留节点自身属性 -->
            <xsl:apply-templates select="@*"/>
            <!-- 按原顺序输出所有ParentRecord节点 -->
            <xsl:apply-templates select="ns:ParentRecord"/>
            <!-- 按原顺序输出所有ChildRecord节点 -->
            <xsl:apply-templates select="ns:ChildRecord"/>
            <!-- 若存在其他类型节点,默认追加在两类记录之后,可按需调整顺序 -->
            <xsl:apply-templates select="*[not(self::ns:ParentRecord or self::ns:ChildRecord)]"/>
        </xsl:copy>
    </xsl:template>

</xsl:stylesheet>

实现说明

  • 脚本基于XSLT 1.0标准编写,兼容所有支持XSLT 1.0的解析器,无需依赖更高版本特性
  • 两类节点内部严格保留原始出现顺序,不会打乱ParentRecord和ChildRecord的先后对应关系
  • 输出结构完全匹配验证过的可正常转JSON的聚合格式,根节点属性、命名空间、子字段内容均无修改,直接接入原有JSON转换流程即可得到完整结果
  • 若后续DivideDetails下新增其他节点类型,脚本会自动保留,不会出现内容遗漏;如需调整节点排序优先级,直接调整对应xsl:apply-templates标签的先后顺序即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 11:30:43