gpt4 book ai didi

使用 Wiremock 进行 XML 匹配

转载 作者:行者123 更新时间:2023-12-04 02:47:40 27 4
gpt4 key购买 nike

我正在使用wiremock 设置一个虚拟PHP 服务器,并希望根据正在传递的XML 字段之一进行匹配。我基本上会有多个请求进入同一个 url,但它们之间的主要区别是发票号。我的用于wiremock的JSON看起来像这样

{
"request": {
"method": "ANY",
"urlPattern": ".*/test.php",
"bodyPatterns" : [{
"equalToXml": "<InvoiceNumber>6</InvoiceNumber>"
}]
},
"response": {
"status": 200,
"bodyFileName": "sample.xml",
"headers": {
"Content-Type": "application/xml"
}
}
}

当我使用 Postman 并且只使用 <InvoiceNumber></InvoiceNumber> 传递 XML 时,这可以正常工作。字段,但是当我添加辅助字段时它失败了。

我希望能够将任何 Xml 传递给wiremock,只要它有 <InvoiceNumber></InvoiceNumber>字段它将读取它。

最佳答案

您可能希望改用 XPath 匹配,如 WireMock documentation 中所述。 . WireMock 有一些不错的 XML 功能,包括占位符,值得保留。

XPath

如果属性值是有效的 XML 并且匹配提供的 XPath 表达式,则认为匹配。如果 XPath 评估返回任何元素,则将认为 XML 文档匹配。 WireMock 委托(delegate)给 Java 的内置 XPath 引擎(通过 XMLUnit),因此直到(至少)Java 8 它支持 XPath 1.0 版。

java :

.withRequestBody(matchingXPath("//InvoiceNumber[text()='6']"))

JSON:
{   "request": {
...
"bodyPatterns" : [ {
"matchesXPath" : "//InvoiceNumber[text()='6']"
} ]
... }, ... }

关于使用 Wiremock 进行 XML 匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56709980/

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