如何在oracle服务总线中删除响应文档中的??

时间:2013-05-08 21:12:29

标签: xml xquery osb 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>

我需要删除&amp;#0; 的东西(我认为是一个空值)并将其替换为其他值但是当我添加替换操作然后我测试服务我得到相同的xml响应,这就是我在响应操作的消息流中所做的事情:

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

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

您可以先使用OSB中提供的bea:serialize函数将xml转换为文本消息格式,然后使用replace函数删除&#0,然后使用{{{}}将结果文本转换为xml 1}}功能。

答案 1 :(得分:0)

您的代码段与XML示例不匹配。

假设不是问题,请尝试不使用包含..只需执行if($ body / FML32 / FLD_ROUTINGFLAG / text() =' ')。

答案 2 :(得分:0)

您正在使用$ body / registerResponse / reg / routingFlag,但我在您共享的响应XML中看不到相同内容。您能否检查一下您是否发布了正确的XML?