在GateWayScript中解析XML响应

时间:2018-11-29 13:11:29

标签: apiconnect

嗨,我是API连接的新手...我有一个用例,其中我必须根据特定条件以XML格式合并来自两个端点的响应。

我在汇编部分中的流程是这样

1) INVOKE

(我做我的 首次服务电话 并捕获响应 在自定义' Response 对象变量'-XMLResponse1

2) INVOKE

(我做我的 第二次服务电话 在这里我不使用任何 自定义“ 响应对象变量” 相反,我使用apim.getvaribale('message.body')来获取响应

3)网关脚本

在这里,我想编写我的脚本来解析xml并合并两个响应 并将合并后的响应发送回消费者

我观察到当我尝试如下所示捕获XML响应时,没有在自定义Response对象变量中捕获

var test1 = apim.getvariable('XMLResponse1'); test1.item(0).childNodes

它引发了这样的异常

test1.item不是函数

现在进行第二次响应,如下所示,其中我没有在自定义Response对象变量中捕获响应,因此效果很好

var test2 = apim.getvariable('message.body');

我的问题:

1)如何在自定义Response对象变量中捕获xml响应?

2)如何将响应解析为javascript对象? api connect是否支持任何库?

2 个答案:

答案 0 :(得分:0)

以下是从IBM社区中找到的样本。希望对您有帮助。

**** Sample XML ****

 <Routing>        
    <partner name="Partner A" key="1">
        <from_ID>PartnerA-KEY1-INT</from_ID>
        <to_ID>PartnerA-KEY1-EXT</to_ID>
        <destination>PartnerA-KEY1-DESTINATION</destination>
    </partner>  
    <partner name="Partner B" key="2">
        <from_ID>PartnerB-KEY2-INT</from_ID>
        <to_ID>PartnerB-KEY2-EXT</to_ID>
        <destination>PartnerB-KEY2-DESTINATION</destination>
    </partner>
    <partner name="Partner C" key="3">
        <from_ID>PartnerC-KEY3-INT</from_ID>
        <to_ID>PartnerC-KEY3-EXT</to_ID>
        <destination>PartnerC-KEY3-DESTINATION</destination>
    </partner>  
</Routing>

 **** Corresponing Gateway Script *****

var response = apim.getvariable('XMLResponse1.body');
var objType = response.item(0);
var string  = objType.getElementsByTagName("partner").item(0).getElementsByTagName("from_ID").item(0).textContent;
  

输出--->字符串= PartnerA-KEY1-INT

答案 1 :(得分:0)

为什么要在GatewayScript节点中合并它们?

您可以将它们合并到一个映射节点中,这样您将有2个变量作为输入(指调用的输出对象)和1个XML对象作为输出...

如果必须应用某些条件或比较,可以在映射节点的代码部分中进行

Mapping Node Comparison