[英]Mule Dataweave Repeating XML Elements to Individually Named XML Elements
Input XML 输入XML
<Address>
<Street>Street Line 1</Street>
<Street>Street Line 2</Street>
<Street>Street Line 3</Street>
<City>City</City>
<Postcode>0000</Postcode>
</Address>
Output XML Required 需要输出XML
<DeliveryAddress>
<DA1>Street Line 1</DA1>
<DA2>Street Line 2</DA2>
<DA3>Street Line 3</DA3>
<City>City</City>
<Postcode>0000</Postcode>
</DeliveryAddress>
How can I use Dataweave to put each street element to a particular DA element in the outbound XML? 如何使用Dataweave将每个街道元素放入出站XML中的特定DA元素?
I've tried to use a *wildcard (Address.*Street) however this then puts the Street elements as a child element: 我尝试使用*通配符(Address。* Street),但是这会将Street元素作为子元素:
<DeliveryAddress>
<DA1>
<Street>Street 1</Street>
<Street>Street 2</Street>
<Street>Street 3</Street>
</DA1>
<City>City</City>
<Postcode>0000</Postcode>
</DeliveryAddress>
Please help ^_^ 请帮忙^ _ ^
The * wildcard is used to reference repeated elements, especially in XML format. *通配符用于引用重复的元素,尤其是XML格式的元素。 Start from this point we can sequentially solve this problem:
从这一点开始,我们可以顺序解决此问题:
payload.Address.*Street
we will get a list of Street. payload.Address.*Street
开始,我们将获得街道列表。 (payload.Address.*Street)
to make it as an object instead of an array. (payload.Address.*Street)
,使其成为对象而不是数组。 () or '' or ""
to enclose the keys of the output: () or '' or ""
将输出的键括起来: ("DA" ++ $$ + 1)
or "DA$($$ + 1)"
are both equally returning the same result: DA1, DA2, DA3, ... ("DA" ++ $$ + 1)
或"DA$($$ + 1)"
均返回相同的结果:DA1,DA2,DA3,...
Therefore, the complete expression for this field should be: (payload.Address.*Street map { ("DA" ++ $$ + 1): $ })
因此,此字段的完整表达式应为:
(payload.Address.*Street map { ("DA" ++ $$ + 1): $ })
Based on Suthony input i just replicated below you can find the dwl script 根据我刚刚在下面复制的Suthony输入,您可以找到dwl脚本
%dw 1.0
DeliveryAddress:{ 邮寄地址:{
(payload.Address.*Street map {
("DA" ++ $$ + 1): $
}),
city:payload.Address.City,
PostCode:payload.Address.Postcode
} }
Cheers! 干杯!
{
DeliveryAddress: {
(payload.Address.*Street map {
("DA" ++ $$ +1): $
}),
City: payload.Address.City,
Postcode: payload.Address.Postcode
}
}
("DA" ++ $$+1)
to print DA1, DA2 and so on. ("DA" ++ $$+1)
以打印DA1,DA2等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.