【问题标题】:How to Skip duplicated field values in Datamapper Mule ESB如何在 Datamapper Mule ESB 中跳过重复的字段值
【发布时间】:2015-01-21 11:38:31
【问题描述】:

我有这样的要求,在根标签“功能”下存在多个功能元素。我需要删除重复项。我已经在源和目标中加载了相应的 xsd。但不确定如何删除重复项。我的 xml 是一个复杂的,但是为了理解,我把这里做得很简单。

来源(输入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 提前致谢。

【问题讨论】:

    标签: mule mule-studio mule-el mule-component


    【解决方案1】:

    这不能用 DataMapper 完成,你需要一个隐藏的 XSLT 转换器来删除重复项,请参阅下面的 stackoverflow question

    【讨论】:

    • 罗梅罗:我不明白。您要求我在使用 HashSet() 的数据映射器之前使用哪些值保留流变量?你能解释一下吗?如果您需要更多详细信息,我可以给您。我的 xml 并不简单,它相当大。但除此逻辑外,其他所有字段都可以实现映射。所以我在这里让我的 xml 变得更简单,以便理解。
    • Romero:请提供示例脚本,它将帮助我更多。提前致谢。
    • 抱歉,我错过了您问题的 DataMapper 部分。我不认为你可以用 datamapper 做到这一点。您可能需要使用 XSLT 进行后处理,请参阅以下内容:stackoverflow.com/questions/10912544/…
    • 非常感谢!分享确切的链接。我已经解决了这个问题。您会在答案字段中发布链接。
    【解决方案2】:

    我已经通过这种方式解决了问题。

    首先我使用了 Datamapper。它将作为响应给出,但有重复。最后我使用了这个链接Removing duplicate elements with XSLT中描述的Simple XSLT(它单独删除重复项)并复制剩余的转换字段(我在链接中使用了XSLT v1)

    希望对像我这样面临问题的人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-15
      • 2015-11-30
      • 1970-01-01
      • 2015-03-14
      • 2015-05-30
      • 2014-11-01
      • 1970-01-01
      相关资源
      最近更新 更多