我希望有人可以帮我使用SoapUI的Web服务吗?
我创建了 TestSteps 来对用户进行身份验证,搜索数据然后将该数据导出到Excel文件中。我遇到的问题是我每次只获取一行数据,而我需要XML响应文件中提供的完整100条记录。
当我发出SOAP请求时,响应的XML文件包含我要提取的 UID 标记内的数据字段:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns2:searchResponse xmlns:ns2="http://woksearch.v3.wokmws.thomsonreuters.com">
<return>
<queryId>1</queryId>
<recordsFound>3648</recordsFound>
<recordsSearched>38406647</recordsSearched>
<records><records xmlns="http://scientific.thomsonreuters.com/schema/wok5.4/public/Fields">
<REC r_id_disclaimer="ResearcherID data provided by Thomson Reuters"> <UID>WOS:A1993LC48100001</UID><static_data></static_data><dynamic_data><cluster_related> </cluster_related></dynamic_data></REC>
<REC r_id_disclaimer="ResearcherID data provided by Thomson Reuters"> <UID>WOS:A1993LE28400012</UID><static_data></static_data><dynamic_data><cluster_related> </cluster_related></dynamic_data></REC>
<REC r_id_disclaimer="ResearcherID data provided by Thomson Reuters"> <UID>WOS:000239231100002</UID><static_data></static_data><dynamic_data><cluster_related> </cluster_related></dynamic_data></REC>
<REC r_id_disclaimer="ResearcherID data provided by Thomson Reuters"> <UID>WOS:000225797900011</UID><static_data></static_data><dynamic_data><cluster_related> </cluster_related></dynamic_data></REC>
<REC r_id_disclaimer="ResearcherID data provided by Thomson Reuters"> <UID>WOS:000249142800001</UID><static_data></static_data><dynamic_data><cluster_related> </cluster_related></dynamic_data></REC>
<REC r_id_disclaimer="ResearcherID data provided by Thomson Reuters"> <UID>WOS:000071234000001</UID><static_data></static_data><dynamic_data><cluster_related> </cluster_related></dynamic_data></REC>
<REC r_id_disclaimer="ResearcherID data provided by Thomson Reuters"> <UID>WOS:000292046900004</UID><static_data></static_data><dynamic_data><cluster_related> </cluster_related></dynamic_data></REC>
<REC r_id_disclaimer="ResearcherID data provided by Thomson Reuters"> <UID>WOS:A1992JR22700001</UID> ....etc.
我正在尝试使用 Property Transfer 将所有这些 UID 值作为列表,并将它们插入到 uid 之间的另一个SOAP请求中标签。然后,对此SOAP请求的响应将为我提供有关每条记录的详细数据。
不幸的是,无论我尝试什么,它都只会返回并传递一条记录,而不是完整的100条记录。
目前我在 Property Transfer 中作为来源的XPath是:
declare namespace ns1='http://scientific.thomsonreuters.com/schema/wok5.4/public/Fields';
declare namespace ns2='http://woksearch.v3.wokmws.thomsonreuters.com';
//ns2:searchResponse[1]/return[1]/records[1]/ns1:records[1]/ns1:REC/ns1:UID[1]
在记录标记下,每个 UID 值都存储在单独的 REC 标记中,因此我需要遍历 REC 标记,每次都选择 UID 值。
下图显示了文件的层次结构布局以及嵌套在 REC 值中的 UID 值的位置:
*原来我无法发布图片,因为我的声誉太低了!嵌套是这样的:
<searchResponse>
<return>
<records>
<records>
<REC>
<UID>WOS: DDKJ7898dIJH</UID>
</REC>
<REC>
<UID>WOS: OIJS897JBSSS</UID>
</REC>
etc...
有谁知道如何将所有这些值传递给另一个SOAP请求?我尝试了许多不同的XPath变种无济于事。我还尝试使用 DataSink 将所有 UID 值拉入电子表格,然后使用 DataSource 将其导入到其他请求中,但我可以仍然只能一次传输一个值!
非常感谢任何帮助!
感谢您的时间,
约翰
答案 0 :(得分:1)
利用Property transfer的解决方案是(确保检查XQuery):
declare namespace ns1='http://scientific.thomsonreuters.com/schema/wok5.4/public/Fields';
declare namespace ns2='http://woksearch.v3.wokmws.thomsonreuters.com';
<UID>
{
for $id in //ns1:UID
return string($id)
}
</UID>
输出格式为:
<UID>WOS:A1993LC48100001 WOS:A1993LE28400012 WOS:000239231100002 WOS:000225797900011 WOS:000249142800001 WOS:000071234000001 WOS:000292046900004</UID>
答案 1 :(得分:0)
一种可能的方法是这样的: