我正在使用SoapUI 3.6.1。 我需要从响应中提取细节并将它们插入到下一个请求中。 我尝试通过'Property Transing'来做到这一点。 在第一个请求中我得到了一些细节,在回复中我可以看到“章节”。 这个“部分”可以包含许多“控件”,每个“控件”都有一些值。 我的回答是:
...
<a:Section>
<a:Controls>
<a:Control>
<a:Code>11</a:Code>
<a:Id>11</a:Id>
<a:Label>bkBranded</a:Label>
<a:Mandatory>true</a:Mandatory>
<a:SortOrder>223</a:SortOrder>
<a:Type>RadioButton</a:Type>
<a:Values>
<a:Value>
<a:Code>bkBrandedWindow</a:Code>
<a:SortOrder>1</a:SortOrder>
<a:Value>Yes</a:Value>
</a:Value>
<a:Value>
<a:Code>bkBrandedWindow</a:Code>
<a:SortOrder>2</a:SortOrder>
<a:Value>No</a:Value>
</a:Value>
</a:Values>
</a:Control>
...
主要条件是只获得强制性(真实)的'控制',并且只获得一个可用的'值'。 我需要进入下一个请求的详细信息如下:
...
<Values>
<Value>
<ControlCode>8003</ControlCode>
<Id>8003</Id>
<Value>123</Value>
<ValueCode>bkBranded</ValueCode>
</Value>
<Value>
<ControlCode>455</ControlCode>
<Id>455</Id>
<Value>1/2</Value>
<ValueCode>bkOther</ValueCode>
</Value>
....
这意味着我需要来自回复的'代码','Id','价值','价值代码'。 也许有可能使用'If..Else'语句或其他。 提前谢谢。
答案 0 :(得分:3)
代码,应该放在属性转移的“来源”
<Values>
{
for $z in //Control
where $z/Mandatory eq "true"
return
<Value>
<ControlCode>{data($z/Code/text())}</ControlCode>
<Id>{data($z/Id/text())}</Id>
<Value>
{
let $values :=
for $x in //Value
order by $x/SortOrder
return $x/Value
return $values[1]
}
</Value>
<ValueCode>{data($z/Label/text())}</ValueCode>
</Value>
}
</Values>
注意:您可能必须在XQuery表达式的标记名称前添加“a:”,才能正确读取源数据。这还需要您声明“a”命名空间,这可以通过“声明”按钮轻松完成。