如何使用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
相关产品推荐
相关产品推荐

