如何使用groovy脚本在soapui中的header部分添加新属性?

yuvru6vn  于 2023-03-22  发布在  其他
关注(0)|答案(2)|浏览(162)

我需要添加新的属性头部分。我有一个soapui请求的例子
<request> <header timeout="?" subver="?"> <msgId>...</msgId> </header>
在header部分有两个属性:“timeout”和“subver”,我需要添加新的一个,即“howToAddNewOne”。

<header timeout="?" subver="?" howToAddNewOne="?">

**我将非常感激groovy中的解决方案:)**我尝试了这样的东西,但没有工作:(

getXML = new GroovyUtils(context) xmlRequest = getXML.getXmlHolder("req#Request") newAttr = xmlRequest.put('//header/@howToAddNewOne', 'value')

k0pti3hp

k0pti3hp1#

使用XmlSlurperStreamingMarkupBuilder

import groovy.xml.StreamingMarkupBuilder

def input = '''<request><header timeout="?" subver="?"><msgId></msgId></header></request>'''
def request = new XmlSlurper().parseText(input)

// add new attribute to <header> tag
request.header.@howToAddNewOne = "?"

// get the modified XML and check that it worked
def outputBuilder = new StreamingMarkupBuilder()
String updatedXml = outputBuilder.bind{ mkp.yield request }
assert updatedXml.contains("howToAddNewOne")
println(updatedXml)

输出:

<request><header howToAddNewOne='?' timeout='?' subver='?'><msgId></msgId></header></request>
mwngjboj

mwngjboj2#

谢谢你的提示。我确实没有100%使用它,但它引导我找到了一个有效的解决方案。因为我使用GroovyUtils,所以我写了这样的东西:

getXML = new GroovyUtils(context)
getReq = getXML.getXmlHolder("req#Request")
header = getReq.getDomNode('//header')
attr = header.getAttributes()
doc = header.getOwnerDocument()
newAttr = doc.createAttribute('howToAddNewOne')
newAttr.setNodeValue('howToAddNewOne')
attr.setNamedItem(newAttr)

非常感谢:)祝你有愉快的一天!!!

相关问题