I need to add new attribute to header section. I have an example of soapui request
<request> <header timeout="?" subver="?"> <msgId>...</msgId> </header>
In header section there are two attributes: "timeout" and "subver" and I need add the new one i.e. "howToAddNewOne".
<header timeout="?" subver="?" howToAddNewOne="?">
**I will be very gratefull for solution in groovy :) ** I tried something like this but didn't work :(
getXML = new GroovyUtils(context) xmlRequest = getXML.getXmlHolder("req#Request") newAttr = xmlRequest.put('//header/@howToAddNewOne', 'value')
Using XmlSlurper
and StreamingMarkupBuilder
:
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)
Output:
<request><header howToAddNewOne='?' timeout='?' subver='?'><msgId></msgId></header></request>