2

输入 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>

要求:

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

输出:

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

数据编织配置:

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

请帮助我配置 DataWeave 组件。

4

2 回答 2

3

您可以尝试增强这一点:

在此处输入图像描述

这里唯一的问题是 $,它应该能够返回带有属性“x”的样本的值。我不知道如何嵌套何时/否则

于 2015-09-24T07:13:33.390 回答
0

下面应该是你的逻辑。为您的场景填写

%dw 1.0
%output application/json
---

payload.Orders map {
  ProId: $.id when $.@id != null otherwise $.sample,
  .....
}
于 2015-09-23T15:28:38.137 回答