GroovyUtils 命名空间两个相同 <tag>
GroovyUtils namespace two same <tag>
我有这样的代码:
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)
尝试将方法的最后一行更改为 (getNodeValue -> getNodeValues, String -> 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.
我有这样的代码:
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)
尝试将方法的最后一行更改为 (getNodeValue -> getNodeValues, String -> 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.