2015-01-21 7 views
0

루트 태그 '기능'아래에 여러 기능 요소가 있습니다. 중복을 제거해야합니다. 소스와 타겟 모두에 해당하는 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의 각 요소에 대해에 할 필요가있다. 그러나 어떻게 할 수 있는지 확실하지 않거나 틀릴 수도 있습니다.

중복을 제거하기위한 지름길, 파삭 파삭 한 방법이 있으면 알려주십시오. 그것은 내 시간을 크게 줄입니다. 뮬 버전 : 3.5.1 미리 감사드립니다.

답변

1

DataMapper로는이 작업을 수행 할 수 없으므로 중복을 제거하려면 XSLT 변환기가 필요합니다. 다음을 참조하십시오. stackoverflow question.

+0

로메로 : 나는 못갑니다. hashSet()을 사용하여 datamapper 앞에 flow 변수를 유지하도록 요청 했습니까? 조금 더 설명해 주 시겠어요? 좀 더 자세한 내용이 필요하면 나에게 줄 수있어. 내 xml은 간단하지 않다. 꽤 큽니다. 그러나 다른 모든 필드는이 논리를 제외하고 매핑을 수행 할 수 있습니다. 그래서 나는 xml을 여기에서 더 간단하게 만들어 이해를 돕는다. – star

+0

Romero : 예제 스크립트를 제공해주세요. 더 도움이 될 것입니다. 미리 감사드립니다. – star

+1

죄송합니다. 질문의 DataMapper 부분을 놓쳤습니다. 나는 당신이 datamapper로 이것을 할 수 있다고 생각하지 않는다. XSLT를 사용한 후 처리가 필요할 수 있습니다. http://stackoverflow.com/questions/10912544/removing-duplicate-elements-with-xslt –

0

나는이 방법으로 문제를 해결했다.

먼저 Datamapper를 사용했습니다. 그것은 응답으로 그러나 중복으로 줄 것이다. 마지막으로이 링크 Removing duplicate elements with XSLT에 설명 된대로 Simple XSLT를 사용하여 (복제본 만 제거함) 링크 된 XSLT v1을 그대로 사용합니다.

희망 나 같은 문제에 직면 한 사람들에게 도움이 될 수 있습니다. .