我使用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”的值?
答案 0 :(得分:1)
如果您只想将其直接转换为json,则不需要使用脚本介体手动执行此操作。
您可以像这样更新ESB代理(或API)的输出顺序,它会将响应xml转换为json。
<outSequence>
<property name="messageType" value="application/json" scope="axis2"/>
<send/>
</outSequence>
有关详细信息,请参阅WSO2 Docs。
编辑:
在您的情况下,如果您使用<respond>
调解员,它将绕过序列,我的建议不会起作用。你有两个选择让它运作。
1)使用发送中介而不是call
和respond
中介。
或
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>