2016-08-19 36 views
0

我使用WSO2 ESB和DDS來創建一個API來從數據庫讀取數據,最後我得到了這個迴應。如何使用腳本調解器將此XML轉換爲Json?請給我一個例子。WSO2 - 如何使用腳本調解器將此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> 

另一個問題:如何讓每一個 「僱員」 使用腳本中介的價值?

回答

1

如果您只是想直接將其轉換爲json,則不需要使用腳本中介手動執行此操作。

您可以像這樣更新ESB代理(或API)的輸出序列,它會將響應xml轉換爲json。

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

查看WSO2 Docs瞭解更多詳情。

編輯:

在你的情況,如果你使用<respond>調解員,它會繞過失序,以及我的建議是行不通的。你有2個選項來使它工作。

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

2)使用loopback調解員,而不是respond調停。

+0

感謝,它的工作。但我想修改響應。如果使用腳本,如何獲得第一個「EmployeeID」的值? –

+0

試試這個。 '' – Bee

+0

getPayloadJSON的返回值爲null –

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>