Web services 遍历SOAP响应中的数据以存储在Excel工作表中

Web services 遍历SOAP响应中的数据以存储在Excel工作表中,web-services,loops,soap,xquery,soapui,Web Services,Loops,Soap,Xquery,Soapui,我知道有一个DataLoop可以用来迭代数据源中的元素,但是如何迭代正在提取到DataSink中的元素呢 我有一个包含100条记录的SOAP响应,我需要从每条记录中提取不同的元素,并将数据存储在Excel工作表中。目前,我正在通过属性传输提取数据,并使用DataSink将其保存到电子表格中。下面是一个代码示例,该代码在每条记录中采用第一作者的姓名,并将其传输到DataSink(位于“属性传输”窗口的“源”部分): 在XPath列中,我有: declare namespace ns1='http:

我知道有一个DataLoop可以用来迭代数据源中的元素,但是如何迭代正在提取到DataSink中的元素呢

我有一个包含100条记录的SOAP响应,我需要从每条记录中提取不同的元素,并将数据存储在Excel工作表中。目前,我正在通过属性传输提取数据,并使用DataSink将其保存到电子表格中。下面是一个代码示例,该代码在每条记录中采用第一作者的姓名,并将其传输到DataSink(位于“属性传输”窗口的“源”部分):

在XPath列中,我有:

declare namespace ns1='http://scientific.thomsonreuters.com/schema/wok5.4/public/FullRecord'; ns1:static_data/ns1:summary/ns1:names/ns1:name[1]/ns1:full_name/text()

当我在此窗口中运行测试时,将显示标题为“Author 1”的列,然后列出100个不同的名称。但是,当我将其传输到DataSink时,它只在工作表中列出第一行100次。

您的查询将把所有的名字放入一个名为
full\u name
的XML元素中。然而,我认为您希望独立地输出它们,但您需要的是:

declare namespace ns1 = 'http://scientific.thomsonreuters.com/schema/wok5.4/public/FullRecord';

//ns1:name[1]//ns1:full_name[1]

您需要遵循如下顺序:

  • 用于检索数据的SOAP调用
  • 使用type=xml的DataSource获取所有记录,一次一条
  • DataSink将每个记录写入Excel
  • 循环回#2以迭代所有记录

  • 不过,这只会让我知道第一张唱片中作者的“全名”。我从中获取数据的XML响应有一个100条记录的完整列表,每条记录都有一个唯一的“全名”,我想遍历所有这些记录,这样我就可以在Excel中用所有不同的作者“全名”值填充100个单元格。我想你需要粘贴一个数据的小示例。但是,也许您需要类似于
    //ns1:name//ns1:full_name[1]
    的内容,它太长了,因此不允许我复制确切的代码,下面是我从中传输属性的XML响应文档的一个表示:啊,这真的很混乱,对不起。我不知道怎么整理,我不是这样打的!Anwyay
    //ns1:name//ns1:full\u name[1]
    只返回数据中的名字。我一直在尝试大量XPath解决方案,但它们似乎只能返回一个值。XQuery方法将返回多个值,但都在一个元素中。我想我需要找到一种方法,从SOAP响应>属性传输>数据链接(Excel)开始处理第一条记录中的所有元素,然后迭代回属性传输,再进行第二条记录,依此类推,但我不知道如何处理。谢谢粘贴的XML与您的描述不匹配,因为它没有任何
    name
    元素。请删除该注释,创建一个适当的XML小示例,并用它编辑您的问题。目前我对你的问题还不够了解
    declare namespace ns2='http://woksearch.v3.wokmws.thomsonreuters.com';
    declare namespace ns1='http://scientific.thomsonreuters.com/schema/wok5.4/public/FullRecord';
    //ns2:retrieveByIdResponse[1]/return[1]/records[1]/ns1:records[1]/ns1:REC
    
    declare namespace ns1='http://scientific.thomsonreuters.com/schema/wok5.4/public/FullRecord'; ns1:static_data/ns1:summary/ns1:names/ns1:name[1]/ns1:full_name/text()
    
    declare namespace ns1 = 'http://scientific.thomsonreuters.com/schema/wok5.4/public/FullRecord';
    
    //ns1:name[1]//ns1:full_name[1]