我有一个来自服务器 (SOAP) 的 XML 响应,并且我在其中得到了多个值。XPath 提取所有值并将它们存储在内部,如 Match_1、Match_2、Match_3 等。但我既不能通过 BSF 后处理器也不能通过粘贴在 XML 中的 JavaScript 代码访问它们。它只是拒绝返回值,然后我这样称呼他们:${Match_1}
.
例子:
响应返回多个contentGroupID
值。
调试采样器揭示了它们:
- 内容组 ID=67
- contentGroupID_1=67
- contentGroupID_2=50
- contentGroupID_3=38
- contentGroupID_4=54
- contentGroupID_5=46
我们需要在下一个请求中使用这些值中的每一个,因此我们在 XML 中添加一个代码来放置我们需要这些值的位置:
${__javaScript
(myOutput =''; var names = {};
for (var i = 1; i <= ${contentGroupID_matchNr}; i++)
{names[i] = "${contentGroupID_" + i + "}";}
for (var j = 1; j <= ${contentGroupID_matchNr}; j++)
{myOutput =
myOutput + '<ns8:forContentGroupId><ns2:id>' + names[j] + '</ns2:id></ns8:forContentGroupId>';},
myOutput)
}
在这里,我们放置 XML 的部分,其值<ns8:forContentGroupId><ns2:id>' + ids + '</ns2:id></ns8:forContentGroupId>
与 XPath 找到的匹配次数一样多。
但魔法并没有发生。请求发送如下:
<ns8:forContentGroupId><ns2:id>${contentGroupID_1}</ns2:id></ns8:forContentGroupId>
<ns8:forContentGroupId><ns2:id>${contentGroupID_2}</ns2:id></ns8:forContentGroupId>
<ns8:forContentGroupId><ns2:id>${contentGroupID_3}</ns2:id></ns8:forContentGroupId>
<ns8:forContentGroupId><ns2:id>${contentGroupID_4}</ns2:id></ns8:forContentGroupId>
<ns8:forContentGroupId><ns2:id>${contentGroupID_5}</ns2:id></ns8:forContentGroupId>
如果我使用 JavaScript 代码设置 BSF 后处理器并在 XML 中添加变量,也会发生同样的情况。
问题是:一个人怎么能获得这些神奇的价值?
PS 一切都很好,然后我使用 ForEach 控制器。但诀窍是我需要对所有值发出单个请求,而不是一个接一个地发出多个请求。