Обработка пустого xml внутреннего ответа в WSO ESB - PullRequest
1 голос
/ 24 апреля 2020

Служба WSO2-ESB в некоторых случаях получает «пустой» ответ 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 s и используются клиентами.

{"results": ["some result", ...]}

Но в некоторых редких случаях конечные точки response - это просто пустой список результатов, который 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 возвращать пустой список как {"results": []} в случае пустого ответа?

1 Ответ

1 голос
/ 25 апреля 2020

Вам необходимо добавить XML инструкции обработки к внешнему элементу с помощью посредника XSLT.

Вы можете обратиться к этому блогу при добавлении инструкции по обработке. https://medium.com/@CKoutsoumpos / WSO2-ESB-ручка пустой или однозначный пункт-массивы-during- json -преобразование-с XSLT-c1d5a778a548

...