Как удалить & # 0; в ответном документе в oracle service bus?

Я получаю этот ответный документ при вызове службы с помощью osb:

<FML32>
<FLD_ERRORCODE>5801</FLD_ERRORCODE>
<FLD_ROUTINGFLAG>&#0;</FLD_ROUTINGFLAG>
<FLD_ROUTEDDESTINATION></FLD_ROUTEDDESTINATION>
<FLD_ERRORMESSAGE>Wrong platform for CDR: 78</FLD_ERRORMESSAGE>
</FML32>

Мне нужно удалить & # 0; вещь (я думаю, что это нулевое значение) и заменить его другим значением, но когда я добавляю действие замены и затем проверяю сервис, я получаю тот же самый ответ XML, это то, что я на самом деле делаю в потоке сообщений на ответное действие:

if (contains($body/registerResponse/reg/routingFlag,'&#0;')) 
then (
    replace ./registerResponse/reg/routingFlag in variable body with '000'
    checked Replace node contents
)

Спасибо за вашу помощь.

3 ответа

Вы можете сначала преобразовать XML в формат текстового сообщения, используя bea:serialize функция доступна в OSB, а затем используйте функцию замены, чтобы удалить &#0 а затем результирующий текст может быть преобразован в XML с помощью bea:inlinedXML функция.

Ваш фрагмент кода не соответствует образцу XML.

Предполагая, что это не проблема, попробуйте без содержимого.. просто сделайте if ($ body / FML32 / FLD_ROUTINGFLAG /text () = '& # 0;').

Вы пытаетесь использовать $body/registerResponse/reg/routingFlag, но я не вижу того же в ответном XML, которым вы поделились. Можете ли вы проверить, правильно ли вы разместили XML?

Другие вопросы по тегам