我的代码如下:
def updateValueNode(testStepName, nameSpace, nodeName, val)
groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);
holder = groovyUtils.getXmlHolder(testStepName);
holder.namespaces[("ns")] = nameSpace;;
return holder.getNodeValue("//ns:" + nodeName) as String;
和xml一样:
<User>
<userName>UserOne</userName>
</User>
<User>
<userName>UserTwo</userName>
</User>
如何使用代码获得第二个用户UserTwo?
第一个我喜欢:
updateValueNode("DoStep#Request", "http://ls.ru/shh/dto/action", "UserName", context.getUserName() as String)
答案 0 :(得分:0)
尝试将方法的最后一行更改为(getNodeValue - &gt; getNodeValue s ,String - &gt; String []):
return holder.getNodeValues("//ns:" + nodeName) as String[];
然后,updateValueNode(...)[0]
- 将为您提供第一个结果,updateValueNode(...)[1]
- 第二个结果等。
已添加:
另一个选择是在xpath中使用position
属性。与/a/b/c[position()=1]
一样。
示例:
def updateValueNode(testStepName, nameSpace, nodeName, index)
groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);
holder = groovyUtils.getXmlHolder(testStepName);
holder.namespaces[("ns")] = nameSpace;;
return holder.getNodeValue("//ns:" + nodeName + "[position()="+index+"]") as String;
应该像:
updateValueNode(..., 1) - first one
updateValueNode(..., 2) - second one
etc.