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

XSLT映射:将嵌套child节点移至父级root节点下

解决方案

需求说明

需要将嵌套的<child>节点提升为根节点的直接子节点,同时保留原节点内的内容。

输入XML:

<root>
  <test>1</test>
  <child>
    <test2>test2</test2>
    <child>
      <test3>test3</test3>
      <test4>test4</test4>
    </child>
  </child>
</root>

期望输出XML:

<root>
  <test>1</test>
  <child>
    <test2>test2</test2>
  </child>
  <child>
    <test3>test3</test3>
    <test4>test4</test4>
  </child>
</root>

方法1:使用XSLT

XSLT是XML转换的标准工具,以下样式表可实现需求:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <!-- 复制所有节点和属性,保留原有结构 -->
  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>

  <!-- 处理根节点下的child节点 -->
  <xsl:template match="root/child">
    <!-- 复制当前child节点,排除内部的child子节点 -->
    <xsl:copy>
      <xsl:apply-templates select="@*|node()[not(self::child)]"/>
    </xsl:copy>
    <!-- 将内部嵌套的child节点提升为根节点的直接子节点 -->
    <xsl:apply-templates select="child"/>
  </xsl:template>

  <!-- 阻止嵌套的child节点被默认模板重复处理 -->
  <xsl:template match="child/child"/>
</xsl:stylesheet>

逻辑说明:

  • 通用模板负责复制所有非目标节点,保证原有内容不丢失
  • 匹配根节点下的<child>,先输出不含嵌套<child>的当前节点,再将内部嵌套的<child>直接输出为根节点的子节点
  • 最后一个模板避免嵌套<child>被默认规则重复输出

方法2:使用Python内置库xml.etree.ElementTree

如果用代码实现,Python内置库可以快速完成转换:

import xml.etree.ElementTree as ET

# 解析输入XML
tree = ET.parse('input.xml')
root = tree.getroot()

# 遍历根节点下的所有child节点
for parent_child in root.findall('child'):
    # 查找当前child内部的嵌套child节点
    nested_child = parent_child.find('child')
    if nested_child is not None:
        # 将嵌套child移动到根节点下
        root.append(nested_child)
        # 从原父child节点中移除嵌套child
        parent_child.remove(nested_child)

# 格式化XML输出(Python 3.9+支持indent方法)
ET.indent(tree, space='  ')
tree.write('output.xml', encoding='utf-8', xml_declaration=True)

逻辑说明:

  1. 解析输入XML文件
  2. 定位根节点下的所有<child>节点
  3. 检查每个<child>内部是否存在嵌套的<child>
  4. 若存在,将嵌套节点移动到根节点层级,同时从原父节点中移除
  5. 格式化输出XML文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 05:53:16