2013-05-08 37 views
0

調用帶有OSB服務時,我得到這個答覆文檔:如何在oracle服務總線的響應文件中刪除�?

<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 
) 

感謝您的幫助。

回答

0

您的代碼片段與XML示例不匹配。

假設是沒有問題的,儘量不包含..只是做,如果($體/ FML32/FLD_ROUTINGFLAG/文本() = '')。

+0

試過了,每當我使用$ body變量時,我在測試代理服務時都會得到這個文檔響應: ' 9999 失效而解組信息:無法解析XML文本 ' – Openmindeo 2013-05-10 13:24:23

+0

由於該XML格式不正確,我似乎無法訪問該變量。 – Openmindeo 2013-05-10 13:30:15

0

您正在試圖使用$ body/registerResponse/reg/routingFlag,但在共享的響應XML中看不到相同的結果。你能否檢查一下你是否發佈了正確的XML?

1

可以首先轉換成XML使用OSB可用bea:serialize功能文本消息格式,然後使用替換功能,以除去&#0,然後將所得的文本可以使用bea:inlinedXML功能被轉換成XML。