/ / Looping с използване на данни - csv, муле, mule-studio, datawave

Овърклок с използване на данни - csv, муле, mule-studio, datawave

моя вход 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>

Конфигурацията на данни, която се опитах:

   %dw 1.0
%input payload application/xml
%output application/csv

---
payload.root.*Element[0].*Record map {
(id:$.@att) when ($.@att) == "g" or ($.@att) == "t",
(type:($.@att) when ($.@att) == "g" or ($.@att) == "t"
}

О / П имам в моя CSV:

  id,type (headers)
blanklines
.
.
.
g,g
.
.
.
.
t,t
.
.

Изискването е ясно. Трябва ми само записите на елемента [0]. Моят CS / O CSV не трябва да има празни редове. Очакваната продукция трябва да бъде:

    id,type
g,g
t,t

Аз все още не можах да разбера синтаксиса и понятията за пренасяне на данни за примка. Моля, помогнете ми. Позволява се всяко по-добро решение.

Отговори:

0 за отговор № 1

Как влизате в атрибут за име (@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")

0 за отговор № 2

Ако не използвате индекса, той се отнася до първия елемент.Можете да опитате да премахнете индекса [0]

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

-1 за отговор № 3

Този код по-долу ще работи добре

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,type
g,g
t,t