Csv 使用dataweave进行循环

Csv 使用dataweave进行循环,csv,mule,mule-studio,dataweave,Csv,Mule,Mule Studio,Dataweave,我的输入xml: <Root> <Element> <Record att="a">value</Record> <Record att="b">value</Record> . . <Record att="g">value</Record> <Record a

我的输入xml:

  <Root>
     <Element>
         <Record att="a">value</Record>
         <Record att="b">value</Record>
           .
           .
          <Record att="g">value</Record>
          <Record att="h">value</Record>
            .
             .
          <Record att="p">value</Record>
            .
            .
          <Record att="t">value</Record>
              .
              .
          <Record att="w">value</Record>
               .
                .
          <Record att="z">value</Record>
     </Element>
     <Element>
         <Record att="a">value</Record>
         <Record att="b">value</Record>
           .
           .
          <Record att="g">value</Record>
          <Record att="h">value</Record>
            .
             .
          <Record att="p">value</Record>
            .
            .
          <Record att="t">value</Record>
              .
              .
          <Record att="w">value</Record>
               .
                .
          <Record att="z">value</Record>
     </Element>
     .
     .
     .
     .
     .
     .
   </Root>
我在csv中获得的o/p:

  id,type (headers)
  blanklines
  .
  .
  .
  g,g
  .
  .
  .
  .
  t,t
  .
  .
要求是明确的。我只需要元素[0]的记录。我的o/p CSV不应有任何空行。 预期产出应为:

    id,type
    g,g
    t,t

我仍然无法理解dataweave for looping的语法和概念。请帮帮我。接受任何更好的解决方案。

既然名称属性(@name)不在XML中,您如何访问它? 您应该访问“att”属性,对吗?(@att)

您是否发布了正确的代码和XML

好的,这应该能帮到你

%dw 1.0
%input payload application/xml
%output application/csv 
---
payload.Root.*Element[0].*Record map {
(id:$.@att) ,
(type:$.@att)
} filter ($.id == "g" or $.type == "t")

下面的代码可以正常工作

Weave Code
%dw 1.0
%output application/csv
---
payload.Root.*Element[0].*Record filter (($.@att == 'g') or ($.@att == 't')) map {
    (id : $.@att),
    (type : $.@att)
} 
输出

id,类型
g、 g
t、 t

如果不使用下标,它将引用第一个元素。您可以尝试删除下标[0]

%dw 1.0
%input payload application/xml
%output application/csv 
---
payload.Root.*Element.*Record map {
    (id:$.@att) ,
    (type:$.@att)
} filter 

我已根据输入更改了我的dataweave代码XML@masettimanikanta请报告这是否对您有效,并标记为回答,以便我们知道!
%dw 1.0
%input payload application/xml
%output application/csv 
---
payload.Root.*Element.*Record map {
    (id:$.@att) ,
    (type:$.@att)
} filter