WSO2 - 如何使用脚本调解器将此XML转换为Json?

时间:2016-08-19 08:47:49

标签: json xml api wso2 esb

我使用WSO2 ESB和DDS制作API以从数据库中读取数据,最后我得到了这个响应。如何使用脚本调解器将此XML转换为Json?请给我一个例子。

<?xml version='1.0' encoding='UTF-8'?> <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
<soapenv:Body>
    <employeeCollection xmlns="http://employee.us.wso2.com">
        <employee>
            <EmployeeID>17</EmployeeID>
            <FirstName>jak</FirstName>
            <LastName>123</LastName>
            <Team>ok</Team>
        </employee>
        <employee>
            <EmployeeID>18</EmployeeID>
            <FirstName>jak</FirstName>
            <LastName>123</LastName>
            <Team>ok</Team>
        </employee>
        <employee>
            <EmployeeID>19</EmployeeID>
            <FirstName>jak</FirstName>
            <LastName>123</LastName>
            <Team>ok</Team>
        </employee>

    </employeeCollection>
</soapenv:Body>

这是配置

<resource methods="POST" uri-template="/team">
  <inSequence>
     <sequence key="conf:/SendSelectWithTeam"/>
     <call>
        <endpoint>
           <address uri="https://192.168.2.165:9453/services/EmployeesDataService/" format="soap12"/>
        </endpoint>
     </call>

     <respond/>
  </inSequence>

其他问题:如何使用脚本调解器获取每个“EmployeeID”的值?

2 个答案:

答案 0 :(得分:1)

如果您只想将其直接转换为json,则不需要使用脚本介体手动执行此操作。

您可以像这样更新ESB代理(或API)的输出顺序,它会将响应xml转换为json。

<outSequence>
     <property name="messageType" value="application/json" scope="axis2"/>
     <send/>
</outSequence>

有关详细信息,请参阅WSO2 Docs

编辑:

在您的情况下,如果您使用<respond>调解员,它将绕过序列,我的建议不会起作用。你有两个选择让它运作。

1)使用发送中介而不是callrespond中介。

2)使用loopback介体而不是respond介体。

答案 1 :(得分:0)

参考此链接

How to convert SOAP response with xsi values to json in WSO2esb

请更改配置文件中的代理outSequence设置,如下所示:

  <outSequence xmlns="http://ws.apache.org/ns/synapse">
   <property name="messageType" value="application/json/badgerfish" scope="axis2" type="STRING"></property>
   <send></send>
</outSequence>