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

如何使用Groovy脚本将XML中指定document_owner__c节点替换为Manager节点

Groovy实现XML指定节点替换方案
  • 采用Groovy内置的XmlSlurper和XmlNodePrinter处理XML,比正则替换更稳定,兼容XML格式缩进、换行变化的场景
  • 核心逻辑为定位所有匹配的document_owner__c节点,删除后插入新的Manager节点

注意:不推荐使用正则表达式直接替换XML内容,XML的换行、缩进、属性顺序变化都会导致正则匹配失败,用内置XML解析工具兼容性更好

完整实现代码

import groovy.xml.XmlNodePrinter
import groovy.xml.XmlSlurper

// 待处理的XML内容,也可以从文件读取:def root = new XmlSlurper().parse(new File("input.xml"))
def xmlContent = '''<?xml version='1.0' encoding='UTF-8'?>
 <root>
   <row>
        <id>728</id>
        <document_owner__c>
            <value>9231799</value>
        </document_owner__c>
    </row>
    <row>
        <id>713</id>
        <document_owner__c>
            <value>9231799</value>
        </document_owner__c>
    </row>
    <row>
        <id>707</id>
        <document_owner__c>
            <value>9231799</value>
        </document_owner__c>
    </row>
    </root>
'''

def root = new XmlSlurper().parseText(xmlContent)

// 遍历所有row节点处理目标节点
root.row.each { row ->
    def targetNode = row.document_owner__c
    if (targetNode && targetNode.value.text() == '9231799') {
        // 删除原document_owner__c节点
        row.remove(targetNode)
        // 插入新的Manager节点
        row.appendNode('Manager', '1234')
    }
}

// 格式化输出XML,如需写入文件只需替换PrintWriter参数为文件输出流
def printer = new XmlNodePrinter(new PrintWriter(System.out))
printer.preserveWhitespace = true
printer.print(root)

运行上述代码即可得到你给出的预期输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:24:07