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

复杂XML处理:利用自身及兄弟节点数据创建新元素

XML批量重构解决方案

针对你需要处理的XML文档批量修改需求,最适合的工具是XSLT(可扩展样式表语言转换),它专门用于XML文档的结构化转换,能高效处理成千上万条<Ingredients>节点。

核心修改点

  • 修正错误标签:将<ID>1</Price_ID>改为<ID>1</ID>
  • 替换<Income>元素:用<Sales>元素替代,其值取自同节点下的<Price>元素内容
  • 删除原<Price>元素
  • 保留其他所有元素、结构不变

实现代码(XSLT 1.0)

<?xml version="1.0" encoding="utf-8"?>
<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>

    <!-- 修正ID标签的闭合错误 -->
    <xsl:template match="Price_ID[../ID]">
        <xsl:element name="ID">
            <xsl:value-of select="../ID/text()"/>
        </xsl:element>
    </xsl:template>
    <xsl:template match="ID[../Price_ID]"/>

    <!-- 替换Income元素为Sales,取值自同层级Price -->
    <xsl:template match="Income">
        <Sales>
            <xsl:value-of select="../Price/text()"/>
        </Sales>
    </xsl:template>

    <!-- 删除原Price元素 -->
    <xsl:template match="Price"/>
</xsl:stylesheet>

代码说明

  1. 默认模板:负责复制所有未被特殊匹配的节点,保证原XML的大部分结构、注释、文本都能保留。
  2. ID标签修正:匹配错误的Price_ID标签,生成正确的<ID>元素并取原<ID>的文本值,同时删除原来的错误<ID>标签。
  3. Income转Sales:匹配<Income>元素,生成<Sales>元素,取值为同层级下<Price>的文本内容。
  4. 删除Price:匹配<Price>元素,不做任何输出,实现删除效果。

运行方法

  1. 把上述XSLT代码保存为transform.xsl文件。
  2. 使用XSLT处理器执行转换:
    • 命令行工具(如Saxon):java -jar saxon.jar -s:input.xml -xsl:transform.xsl -o:output.xml
    • 在线工具:直接上传原XML和XSLT文件,执行转换后下载结果

这样就能批量处理所有<Ingredients>节点,完成你需要的重构效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 13:36:29