0

使用 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>

我需要删除 东西(我认为是空值)并将其替换为其他值,但是当我添加替换操作然后测试服务时,我得到相同的 xml 响应,这实际上是我在消息流中所做的响应动作:

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

谢谢你的帮助。

4

3 回答 3

1

您可以先使用 OSB 中提供的函数将 xml 转换为文本消息格式bea:serialize,然后使用 replace 函数将其删除&#0,然后可以使用函数将生成的文本转换为 xml bea:inlinedXML

于 2014-08-17T04:39:55.307 回答
0

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

于 2013-06-03T04:52:12.983 回答
0

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

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

于 2013-05-09T17:13:35.750 回答