从在soap文件中读取文件插入xml节点值
问题描述:
我有一个需求,在我的文件系统中有一个xml,我必须从该xml读取标记值并填充到我的soap请求中。我完全不知道我该怎么做。从在soap文件中读取文件插入xml节点值
我写了一个Groovy脚本读取文件:
File file = new File("C:/Users/Desktop/abc.txt")
fileContent = file.getText()
现在我想从我的XML源读取标签值,并在我的SOAP请求的XML标记填充。
我的示例XML是
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" >
<soapenv:Header/>
<soapenv:Body>
<dto:dto>
<mon:abc>
<mon:HDR>
<mon:MESSAGE_ID>abcd</mon:MESSAGE_ID>
<mon:MSG_TIMESTAMP>2015-10-12T11:24:35-06:00</mon:MSG_TIMESTAMP>
</mon:HDR>
</mon:abc>
</dto:dto>
</soapenv:Body>
</soapenv:Envelope>
我要读从我的示例XML MESSAGE_ID到我的SOAP请求消息ID。有人可以指导我如何做到这一点?
答
这里是Groovy脚本来从给定文件
注意,您必须提供样品不具有正确的数据,失踪的命名空间中提取邮件ID。
import com.eviware.soapui.support.XmlHolder
//change the file path here
def xml = new File('/absolute/file/path').text
def holder = new XmlHolder(xml)
def messageId = holder.getNodeValue('//*:MESSAGE_ID')
assert messageId, "Message Id is empty or null"
log.info "MessageId is : ${messageId}"
如果您需要messageId
在同一个测试本案的其他步骤中使用,请透过以下附加声明存放在测试用例级属性:
context.testCase.setPropertyValue('MESSAGE_ID', messageId)
后来你可以在其他步骤(除了groovy)使用${#TestCase#MESSAGE_ID}
在另一个与相同的测试用例的groovy脚本中使用它210