在 WSO ESB 中处理空 xml 后端响应
Handling an empty xml backend response in WSO ESB
在某些情况下,WSO2-ESB 服务正在接收来自端点的 'empty' XML 响应。
通常响应如下所示。它包含几个 result
s:
<?xml version='1.0' encoding='UTF-8'?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:results xmlns:ns2="http://the-endpoint.com/">
<result>some result</result>
<result>some other result</result>
<result>some very different result</result>
</ns2:results>
</S:Body>
</S:Envelope>
然后转换为 result
的数组并由客户端使用。
{"results": ["some result", ...]}
但在极少数情况下,端点响应只是一个空的结果列表,它被 JAX-WS 翻译成一个空的 <ns2:results/>
标记。
<?xml version='1.0' encoding='UTF-8'?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:results xmlns:ns2="http://the-endpoint.com/"/>
</S:Body>
</S:Envelope>
WSO2-ESB 然后将其转换为 null
对象,这引起了麻烦。
{"results": null}
现在如何使 WSO2-ESB Web 服务 return 成为空列表 {"results": []}
以防出现空响应?
您需要使用 XSLT 中介程序向外部元素添加 XML 处理指令。
添加处理指令可以参考这篇博客。 https://medium.com/@CKoutsoumpos/wso2-esb-handle-empty-or-single-item-arrays-during-json-transformation-with-xslt-c1d5a778a548
在某些情况下,WSO2-ESB 服务正在接收来自端点的 'empty' XML 响应。
通常响应如下所示。它包含几个 result
s:
<?xml version='1.0' encoding='UTF-8'?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:results xmlns:ns2="http://the-endpoint.com/">
<result>some result</result>
<result>some other result</result>
<result>some very different result</result>
</ns2:results>
</S:Body>
</S:Envelope>
然后转换为 result
的数组并由客户端使用。
{"results": ["some result", ...]}
但在极少数情况下,端点响应只是一个空的结果列表,它被 JAX-WS 翻译成一个空的 <ns2:results/>
标记。
<?xml version='1.0' encoding='UTF-8'?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:results xmlns:ns2="http://the-endpoint.com/"/>
</S:Body>
</S:Envelope>
WSO2-ESB 然后将其转换为 null
对象,这引起了麻烦。
{"results": null}
现在如何使 WSO2-ESB Web 服务 return 成为空列表 {"results": []}
以防出现空响应?
您需要使用 XSLT 中介程序向外部元素添加 XML 处理指令。
添加处理指令可以参考这篇博客。 https://medium.com/@CKoutsoumpos/wso2-esb-handle-empty-or-single-item-arrays-during-json-transformation-with-xslt-c1d5a778a548