使用数据编织组件

时间:2015-09-15 15:24:17

标签: xml csv mule datamapper dataweave

我有以下xml作为我的输入

InputXML:

<Orders>
<Order>
  <sample id="1"></sample>
  <sample id="2"></sample>
  .
  .
  .
  .    
 </Order>
<Order>
  <sample id="1"></sample>
  <sample id="2"></sample>
  .
  .
  .
  .    
 </Order>
<Order>
   <sample id="1"></sample>
   <sample id="2"></sample>
   .
   .
   .
   .    
</Order>
.
.
.
.
</Orders>

我需要将此xml发送到我的流程中的批次组件。我的批次应按以下方式接受每条记录

  Record1:1st Order
  Record2:2nd Order
  Record3:3rd Order
  .
  .
  .
  .

现在请让我知道在 DataWeave(转换消息)组件中我需要做什么编码来实现这种情况。我尝试了多种方法但没有结果。我这几天尝试这个,累了。请帮帮我这方面!!请分享示例代码。

输出应如下所示:

1) Order  ---- Object
          sample-----Object
              -sampleValue(i.e; value of 'sample' element)
              -sampleidValue(i.e; value of attribute of 'sample')
          sample-----Object
              -sampleValue(i.e; value of 'sample' element)
              -sampleidValue(i.e; value of attribute of 'sample')
            .
            .
            .
            .
2) Order  ---- Object
          sample-----Object
              -sampleValue(i.e; value of 'sample' element)
              -sampleidValue(i.e; value of attribute of 'sample')
          sample-----Object
              -sampleValue(i.e; value of 'sample' element)
              -sampleidValue(i.e; value of attribute of 'sample')
            .
            .
            .
            .

内部批次:

我还有另一个dataweave组件,可以将此集合转换为csv。

此dataweave组件的输入是此集合中的每个对象。数据从此对象中提取并写入CSV文件。

更新的问题:

我面临的问题是集合中的每个对象都是结构

 Order  ---- Object
          sample1-----Object
              -sampleValue(i.e; value of 'sample' element)
              -sampleidValue(i.e; value of attribute of 'sample')
          sample2-----Object
              -sampleValue(i.e; value of 'sample' element)
              -sampleidValue(i.e; value of attribute of 'sample')
            .
            .
            .
            .

但我的CSV输出应为:

        sample1.sampleValue   sample3.sampleValue   .    .       .       .(this is 'Order1' object)
            sample2.sampleValue   sample6.sampleValue   .    .       .       .(this is 'Order2' object)
.
.
.
.

我无法以这种方式在CSV文件中获得输出。 bcz我的样本&#39;也是一个对象列表。我也在 DataMapper和DataWeave 中尝试了这个。请帮我解释如何提取值。

1 个答案:

答案 0 :(得分:0)

您好请找到以下数据编织

%dw 1.0
%output application/csv separator=" "
---

payload.Orders.*Order map {
SampleValue1:$.sample.@id,
SampleValue2:$.sample.@id,
SampleValue3:$.sample.@id   
}

以下是X%dw 1.0

%输出应用程序/ csv分隔符=“”

payload.Orders.*Order map {
SampleValue1:$.sample.@id,
SampleValue2:$.sample.@id,
SampleValue3:$.sample.@id   
}

以下是我根据问题中共享的xml使用的xml。

<?xml version="1.0"?>
<Orders>
<Order>
  <sample id="1">test</sample>
</Order>
<Order>
  <sample id="1">test</sample>
</Order>
<Order>
   <sample id="1">test</sample>
</Order>
</Orders>

希望这有帮助!