gpt4 book ai didi

xml - 有没有办法使用 XPath 或 XQuery 在 SoapUI 中测试无序 XML 标记中的值?

转载 作者:行者123 更新时间:2023-12-03 17:05:32 25 4
gpt4 key购买 nike

我已经编写了一个 REST 服务来访问 MySQL 数据库。该服务将很快移植到使用 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 元素是否具有相同的 name 值?我知道有一个 count功能,但我不确定它可以如何精心使用。

最佳答案

So the question is, is there a way in XPath or XQuery to test that "Karl" appears once in the results, "Anton" appears twice, and "Friedrich" appears once?



使用 :
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

关于xml - 有没有办法使用 XPath 或 XQuery 在 SoapUI 中测试无序 XML 标记中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13484590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com