如何用Groovy脚本为SoapUI请求的Header节点添加新属性
可行的Groovy解决方案
你的原脚本使用put方法尝试添加属性,但XmlHolder的put方法主要用于更新已有节点或属性的值,无法直接创建新属性。以下是两种可行的解决方案:
方案一:基于DOM节点操作(推荐)
直接获取Header节点并调用DOM API添加属性,兼容性更好:
// 初始化Groovy工具类并获取请求的XmlHolder def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context) def xmlHolder = groovyUtils.getXmlHolder("req#Request") // 定位header节点(若有多个header节点,可改用selectNodes遍历) def headerNode = xmlHolder.getDomNode("//header") // 添加新属性 headerNode.setAttribute("howToAddNewOne", "?") // 将修改后的XML写回请求 xmlHolder.updateProperty()
方案二:使用XmlSlurper重新构建XML
通过Groovy的XmlSlurper解析并修改XML:
// 获取原始请求内容 def requestContent = context.expand('${req#Request}') // 解析XML并添加属性 def xml = new XmlSlurper().parseText(requestContent) xml.header.@howToAddNewOne = "?" // 将修改后的XML转换为字符串并写回请求 def updatedXml = groovy.xml.XmlUtil.serialize(xml) context.testCase.testSteps["req"].setPropertyValue("Request", updatedXml)
注意事项
- 替换代码中的
req为你实际的请求步骤名称 - 若存在多个
<header>节点,方案一中需改用xmlHolder.selectNodes("//header")循环处理所有节点
内容的提问来源于stack exchange,提问作者marecki
相关产品推荐
相关产品推荐

