Skip to main content
 首页 » 编程设计

xpath之SoapUI属性传输和XPath/XQuery数字格式

2025年05月04日94落叶无声

我在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()