如何迭代XQuery路径? 1,4507 1. 2017-02-28T05:10:32.0606654Z 2017-02-28T05:10:32.2267838Z 离开 离开 账户:2015年2月10日xxx 16.666131292069704 打开 1,4507 2. 2017-02-28T05:10:32.0606654Z 2017-02-28T05:10:32.2267838Z 离开 离开 账户:2015年2月10日xxx 16.666131292069704 打开 0 126
以上是我的xml响应: 我想验证每一行的状态是否为打开状态 打开如何迭代XQuery路径? 1,4507 1. 2017-02-28T05:10:32.0606654Z 2017-02-28T05:10:32.2267838Z 离开 离开 账户:2015年2月10日xxx 16.666131292069704 打开 1,4507 2. 2017-02-28T05:10:32.0606654Z 2017-02-28T05:10:32.2267838Z 离开 离开 账户:2015年2月10日xxx 16.666131292069704 打开 0 126,xquery,soapui,Xquery,Soapui,以上是我的xml响应: 我想验证每一行的状态是否为打开状态 打开 声明名称空间ns1='https://************/token'; 对于//ns1:Response[1]/ns1:rows[1]中的$x 返回数据($x/ns1:e[1]/ns1:e[10]/text()) 但它并没有返回值。。它只是给出了预期结果中的以下内容 declare namespace ns1='https://**********/token'; <Result> for $x in //
声明名称空间ns1='https://************/token';
对于//ns1:Response[1]/ns1:rows[1]中的$x
返回数据($x/ns1:e[1]/ns1:e[10]/text())
但它并没有返回值。。它只是给出了预期结果中的以下内容
declare namespace ns1='https://**********/token';
<Result>
for $x in //ns1:Response[1]/ns1:rows[1]
return data($x/ns1:e[1]/ns1:e[10]/text())
</Result>
中的$x//ns1:Response[1]/ns1:rows[1]
返回数据($x/ns1:e[1]/ns1:e[2]/text())
它是正确的xquery表达式吗?如果有人选中此项会很有帮助吗?您应该将XQuery表达式包装在
{}
中,否则它将被视为字符串文字:
<Result>for $x in //ns1:Response[1]/ns1:rows[1]
return data($x/ns1:e[1]/ns1:e[2]/text())</Result>
但不清楚预期的输出是什么,因为您在每个路径步骤上都使用了精确索引,这将导致表达式一次只匹配一个元素…您应该将XQuery表达式包装在
{}
中,否则它将被视为字符串文字:
<Result>for $x in //ns1:Response[1]/ns1:rows[1]
return data($x/ns1:e[1]/ns1:e[2]/text())</Result>
但不清楚预期的输出是什么,因为您在每个路径步骤上都使用了精确的索引,这将导致表达式一次只匹配一个元素…如果您只想知道每一行都有
e[10]=“Open”
,那么您可以执行以下操作:
<Result>Open</Result>
{empty(/ns1:Rows/*/*[10][.!=“Open”])}
(您的问题标题谈到了迭代。这是一种过程性思维。在XQuery中,就像在SQL中一样,您通常直接对项目集进行操作:您不需要一次迭代一个来处理它们。)如果您只想知道每一行都有
e[10]=“Open”
,那么您可以执行以下操作:
<Result>Open</Result>
{empty(/ns1:Rows/*/*[10][.!=“Open”])}
(您的问题标题谈到了迭代。这是一种过程性思维。在XQuery中,就像在SQL中一样,您通常直接对项目集进行操作:您不需要一次迭代一个项目来处理它们。)我觉得这一点很正确,因为我必须做断言:)这个对我来说是正确的,因为我必须这样做:)
<Result>{empty(/ns1:Rows/*/*[10][.!="Open"])}</Result>