如何使用XQuery迭代SoapUI中的SOAP响应?

时间:2013-04-05 12:31:00

标签: testing soap xquery

我有一个类似于这个的SOAP响应:

<items>
 <item date="2009-10-02"> </item>
 <item date="2010-10-02"></item>
 <item date="2012-10-02"></item>
</items>

如果每个项目中的日期都具有正确的格式,我需要使用xQuery和我已经拥有的正则表达式进行检查。我已经尝试了迭代,但它一直警告我:“当前响应中不止一个匹配”。 这就是我已经尝试过的:

 let $items:= (//items)
 for $i in $items
    return 1

谢谢!

2 个答案:

答案 0 :(得分:0)

我终于找到了一些有用的东西:

for $z in //item[1]
return matches($z/@date, 'regularexp')

答案 1 :(得分:0)

如果您的查询处理器支持XQuery 3.0,并且您对所有日期的组合结果感兴趣,请使用“every-satisfies”语法。

every $date in //item/@date satisfies matches($date, '[-\d]+')

如果处理器不支持该语法,您可以使用以下内容:

not(//item/@date/matches(., '[-\d]+') != true())

如果它只支持XQuery 1.0,则可能需要在XPath序列周围包装matches

not(matches(//item/@date, '[-\d]+') != true())

如果您对个别值感兴趣,请使用以下命令:

//item/@date/matches(., '[-\d]+')

或者再次针对XQuery 1.0:

for $date in //item/@date
return matches($date, '[-\d]+')