DataWeave组件中的条件检查

时间:2015-09-23 07:54:04

标签: mule mule-studio dataweave

输入XML:

 <Orders>
 <Order>
   <sample id="a">23435</sample>
   .
   .
   .
  <sample id="x">D123</sample>
     .
      .
  <sample id="y">5346</sample>
  <sample id="z"></sample>
  .
  .
  </Order>
 <Order>
   <sample id="a">23435</sample>
   .
   .
   .
  <sample id="x">D345</sample>
     .
      .
  <sample id="y">5346</sample>
  <sample id="z">D217</sample>
  .
  .
  </Order>
 <Order>
   <sample id="a">23435</sample>
   .
   .
   .
  <sample id="x">D1235</sample>
     .
      .
  <sample id="y">5346</sample>
  <sample id="z"></sample>
  .
  .
  </Order>

要求:

如果&#39;示例&#39;元素属性=&#39; z&#39;没有价值,那么我需要映射&#39; sample&#39;元素属性&#39; x&#39;到&#39; ProId&#39 ;;否则,如果它有价值,那么我不应该将任何值传递给ProFeed&#39;地图。 (对于我需要创建一个&#39; ProFeed&#39;地图的每个&#39; Order&#39;元素)

输出:

 [ProFeed={ProId="",Lang="eng",CatId="AU"},ProFeed={ProId="",Lang="eng",CatId="AU"},ProFeed={ProId="",Lang="eng",CatId="AU"}]

DataWeave配置:

%input application/xml 
%output application/java
.(some configuration code)
.
.

请帮我解决DataWeave组件的配置问题。

2 个答案:

答案 0 :(得分:3)

您可以尝试增强此功能:

enter image description here

这里唯一的问题是否则是$,它应该能够返回带有属性&#34; x&#34;的样本值。我无法计算如何嵌套when / otherwise

答案 1 :(得分:0)

以下应该是你的逻辑。 根据您的情况填写

%dw 1.0
%output application/json
---

payload.Orders map {
  ProId: $.id when $.@id != null otherwise $.sample,
  .....
}