我在SoapUI中有此属性转移:
declare namespace soapEnv="http://schemas.xmlsoap.org/soap/envelope/";
//soapEnv:Body/LoginResponse/baseSequenceId
并说它返回123456。但是我想要123457(我得到+1)
我尝试了这个:
declare namespace soapEnv="http://schemas.xmlsoap.org/soap/envelope/";
//soapEnv:Body/LoginResponse/baseSequenceId + 1
但结果是123457.0。我尝试了一些重新格式化的方法,但是很可能我没有以正确的方式使用它们。我在这方面很新。
我也尝试了这个(使用xquery):
declare namespace soapEnv="http://schemas.xmlsoap.org/soap/envelope/";
let $x := //soapEnv:Body/LoginResponse/baseSequenceId
return $x
并用$ x尝试了几件事,但是我尝试的所有结果都以null或InvocationTargetException结尾。
任何帮助表示赞赏!
最佳答案
非常感谢您的建议,尽管我无法使它们起作用:(
我的SoapUI可能有问题,因为所有xpath函数都返回null。
我使它与groovy一起工作:
groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
loginResponse = groovyUtils.getXmlHolder("Login#Response")
loginResponse.declareNamespace( "soapEnv", "http://schemas.xmlsoap.org/soap/envelope/" )
sessionIdStr = loginResponse.getNodeValue( "//soapEnv:Body/LoginResponse/sessionId" )
baseSequenceIdStr = loginResponse.getNodeValue( "//soapEnv:Body/LoginResponse/baseSequenceId" )
sequenceIdStr = (baseSequenceIdStr.toInteger() + 1).toString()
createRequest = groovyUtils.getXmlHolder("Create#Request")
createRequest.declareNamespace( "soapEnv", "http://schemas.xmlsoap.org/soap/envelope/" )
createRequest.setNodeValue( "//soapEnv:Header/SessionId", sessionIdStr )
createRequest.setNodeValue( "//soapEnv:Header/TransactionId", baseSequenceIdStr )
createRequest.setNodeValue( "//soapEnv:Header/SequenceId", sequenceIdStr )
createRequest.updateProperty()
关于xpath - SoapUI属性传输和XPath/XQuery数字格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6360756/