我写了一个关于MySQL数据库的REST服务。该服务很快将使用MongoDB数据库移植到更新的系统。稍后,它可以使用Oracle移植到另一个系统。
为什么我们这么多移植是不重要的。
结果XML中有几个嵌套标签具有相同的名称,这是一个常见的情况:
样品:
<root>
<level1>
<name>Karl</name>
</level1>
<level1>
<name>Anton</name>
</level1>
<level1>
<name>Friedrich</name>
</level1>
<level1>
<name>Anton</name>
</level1>
</root>
我一直在使用SoapUI测试系统之间的结果,以确保查询等仍然正常工作。集成测试等等。
所以问题是,在XPath或XQuery中是否有一种方法可以测试“Karl”在结果中出现一次,“Anton”出现两次,“Friedrich”出现一次?我通常只测试// root / level1 [1] / name ==“Karl”等,但我不能依赖系统之间的一致排序。有没有办法测试无序结果?或者有没有办法验证正确数量的level1元素是否具有相同的名称值?我知道有一个count
函数,但我不确定它是如何精心使用的。
答案 0 :(得分:4)
所以问题是,在XPath或XQuery中是否有一种方法可以测试它 “Karl”在结果中出现一次,“Anton”出现两次,并且 “弗里德里希”出现一次?
使用强>:
count(/*/level1/name[.='Karl']) = 1
count(/*/level1/name[.='Anton']) = 2
count(/*/level1/name[.='Friedrich']) = 1
这是三个独立的XPath表达式,每个表达式必须求值为true()
。
或者,您可以将它们组合成一个只能评估一次的XPath表达式:
count(/*/level1/name[.='Karl']) = 1
and
count(/*/level1/name[.='Anton']) = 2
and
count(/*/level1/name[.='Friedrich']) = 1