Как удалить & # 0; в ответном документе в oracle service bus?
Я получаю этот ответный документ при вызове службы с помощью osb:
<FML32>
<FLD_ERRORCODE>5801</FLD_ERRORCODE>
<FLD_ROUTINGFLAG>�</FLD_ROUTINGFLAG>
<FLD_ROUTEDDESTINATION></FLD_ROUTEDDESTINATION>
<FLD_ERRORMESSAGE>Wrong platform for CDR: 78</FLD_ERRORMESSAGE>
</FML32>
Мне нужно удалить & # 0; вещь (я думаю, что это нулевое значение) и заменить его другим значением, но когда я добавляю действие замены и затем проверяю сервис, я получаю тот же самый ответ XML, это то, что я на самом деле делаю в потоке сообщений на ответное действие:
if (contains($body/registerResponse/reg/routingFlag,'�'))
then (
replace ./registerResponse/reg/routingFlag in variable body with '000'
checked Replace node contents
)
Спасибо за вашу помощь.
3 ответа
Вы можете сначала преобразовать XML в формат текстового сообщения, используя bea:serialize
функция доступна в OSB, а затем используйте функцию замены, чтобы удалить �
а затем результирующий текст может быть преобразован в XML с помощью bea:inlinedXML
функция.
Ваш фрагмент кода не соответствует образцу XML.
Предполагая, что это не проблема, попробуйте без содержимого.. просто сделайте if ($ body / FML32 / FLD_ROUTINGFLAG /text () = '& # 0;').
Вы пытаетесь использовать $body/registerResponse/reg/routingFlag, но я не вижу того же в ответном XML, которым вы поделились. Можете ли вы проверить, правильно ли вы разместили XML?