2016-07-24 90 views
1

我在3種不同服務的回報中有1..n個對象。我用Scatter-Gather爲這三種服務中的每一種打電話。我總變爲:如何使用Dataweave刪除括號或忽略它們使用Scatter-Gather?

[ 
<?xml version='1.0' encoding='windows-1252'?> 
<policy-group> 
    </policy> 
    </policy> 
</policy-group>, 
<?xml version='1.0' encoding='windows-1252'?> 
<policy-group> 
    </policy> 
    </policy> 
</policy-group>, 
<?xml version='1.0' encoding='windows-1252'?> 
<policy-group> 
    </policy> 
    </policy> 
</policy-group> 
] 

字符串XML消息中的括號引起我的Dataweave錯誤。有誰知道如何解決這個問題?

我的錯誤是..

在序言

意外字符 '['(代碼91);預計'<' at [row,col {unknown-source}]:[1,1](com.ctc.wstx.exc.WstxUnexpectedCharException)。

在此先感謝。

回答

0

在Scatter-Gather之後添加Combine-Collection,它會將所有結果合併成一個。對於某些情況下,結果未合併時會發生問題。

+0

Sulthony直接做的,它沒有工作。我得到了可以記錄的XML,但現在它回到了3個BinaryInputStreams和記錄器中的限定類名。當我刪除Combine Collections時,這一點也持續存在。這真的很難解決。 –

+0

DataWeave的預期輸入是什麼?所有這三個XML作爲單個輸入,還是逐一進行? 如果它是單個輸入,則在* Scatter-Gather *之後將* Object添加到XML *轉換器。它將所有這三個XML包裝爲一個XML文檔。 如果將逐個進行,則在* Scatter-Gather *之後添加*收集分流器*流量控制。它將處理每個XML文檔。 –

+0

這是用Message Enricher和Dataweave中的扁平函數解決的 –

0

如果你不想使用變壓器或寫一些特殊的代碼來做到這一點。你可以簡單地做像下面

使用表達式成分

<expression-component doc:name="Expression"><![CDATA[ 
message.payload= org.mule.util.StringUtils.removeStart(message.payload,"["); 
message.payload= org.mule.util.StringUtils.removeEnd(message.payload,"]"); 
]]> 
</expression-component> 

,或者可以設置有效載荷

<set-payload value="#[message.payload= org.mule.util.StringUtils.removeStart(message.payload,&quot;[&quot;);message.payload= org.mule.util.StringUtils.removeEnd(message.payload,&quot;]&quot;)]" doc:name="Set Payload"/> 
相關問題