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