2015-01-21 79 views
0

我有這樣的要求,在根標籤'Features'下有多個要素元素存在。我需要刪除重複項。我已經在源和目標中加載了相應的xsd。但不知道如何刪除重複。我的XML是一個複雜的,但要明白,我在這裏簡單。如何在Datamapper中跳過重複的字段值Mule ESB

源(輸入XML)

<features> 
    ......(other fields)... 
<Datas> 
    <feature> 1</feature> 
    <feature> 2 </feature> 
    <feature> 1 </feature> 
    <feature> 3 </feature> 
    <feature> 3 </feature> 
    </Datas> 
</features> 

目標(輸出XML)

<features> 
    ....(other fields).... 
    <ItemDetails> 
    <feature> 1</feature> 
    <feature> 2 </feature> 
    <feature> 3 </feature> 
</ItemDetails> 

我就在想,什麼需要做對於DataMapper的每個元素。但不知道該怎麼辦或可能是錯的

請讓我知道,如果任何捷徑,脆皮的方式來刪除重複。它會大大減少我的時間。 Mule版本:3.5.1 在此先感謝。

回答

1

這不能用DataMapper完成,你需要一個別有用心的XSLT轉換器來刪除重複項,請參閱下面的stackoverflow question

+0

羅梅羅:我沒有得到。你問我在datamapper之前用HashSet()來保持流變量的值?你能解釋一下嗎?如果你需要更多的細節,我可以給你。我的xml並不簡單,它相當大。但是除了這個邏輯之外,所有其他領域都能夠實現映射。所以我在這裏簡化了我的xml來冷靜理解。 – star 2015-01-21 21:03:28

+0

Romero:請提供示例腳本,它會幫助我更多。提前致謝。 – star 2015-01-21 21:14:07

+1

對不起,我錯過了您的問題的DataMapper部分。我不認爲你可以用datamapper做到這一點。您可能需要使用XSLT進行後期處理,請參閱以下內容:http://stackoverflow.com/questions/10912544/removing-duplicate-elements-with-xslt – 2015-01-22 00:38:59

0

我以這種方式解決了這個問題。

首先我使用了Datamapper。它會給出答覆,但重複。最後,我使用了此鏈接中描述的Simple XSLT Removing duplicate elements with XSLT(它將單獨刪除重複項),並對其餘轉換後的項目進行復制(我在鏈接中使用了XSLT v1)

希望對於像我這樣的面臨問題的人。