OK, this one changes matching nodes in an existing request:
import javax.xml.transform.Transformer
import javax.xml.transform.TransformerFactory
import javax.xml.transform.OutputKeys
import javax.xml.parsers.DocumentBuilderFactory
import javax.xml.parsers.DocumentBuilder
import org.w3c.dom.Document
import org.xml.sax.InputSource
import javax.xml.transform.dom.DOMSource
import javax.xml.transform.stream.StreamResult
import org.apache.xpath.XPathAPI
import org.apache.xml.dtm.ref.DTMNodeList
def request = context.expand( '${Test Request#Request}' )
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(new StringReader(request)));
DTMNodeList nodes = XPathAPI.selectNodeList(doc.getFirstChild(), "/info/item");
for (node in nodes) {
doc.renameNode(node, null, 'myItem')
}
Transformer transformer = TransformerFactory.newInstance().newTransformer();
StringWriter sw = new StringWriter();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
transformer.transform(new DOMSource(doc), new StreamResult(sw));
def newRequest = sw.toString();
testRunner.testCase.getTestStepByName('Test Request').httpRequest.requestContent = newRequest