Mule Dataweave将重复的XML元素编织成单独命名的XML元素
输入XML 需要输出XML 如何使用Dataweave将每个street元素放到出站XML中的特定DA元素 我尝试使用*通配符地址。*Street,但这会将Street元素作为子元素:Mule Dataweave将重复的XML元素编织成单独命名的XML元素,xml,mule,dataweave,Xml,Mule,Dataweave,输入XML 需要输出XML 如何使用Dataweave将每个street元素放到出站XML中的特定DA元素 我尝试使用*通配符地址。*Street,但这会将Street元素作为子元素: <DeliveryAddress> <DA1> <Street>Street 1</Street> <Street>Street 2</Street> <Street>Str
<DeliveryAddress>
<DA1>
<Street>Street 1</Street>
<Street>Street 2</Street>
<Street>Street 3</Street>
</DA1>
<City>City</City>
<Postcode>0000</Postcode>
</DeliveryAddress>
请帮助^ ^通配符用于引用重复的元素,尤其是XML格式的元素。从这一点开始,我们可以依次解决这个问题: 从这个表达式payload.Address.*Street开始,我们将得到一个Street列表。 但是,如果我们在当前DataWeave表达式中直接使用它,则会发生错误。因此,将该表达式包装在一个括号内:payload.Address.*Street,使其成为一个对象而不是数组。 现在我们只需要将街道标记重命名为对应的DAn。因此,我们可以利用map运算符迭代每个记录,并使用括号或引号,或将输出的键括起来: DA++$$+1或DA$$$+1都返回相同的结果:DA1、DA2、DA3
因此,这个字段的完整表达式应该是:payload.Address.*Street map{DA++$$+1:$}基于我刚才在下面复制的Suthony输入,您可以找到dwl脚本
%dw 1.0
%输出应用程序/xml
送货地址:{
(payload.Address.*Street map {
("DA" ++ $$ + 1): $
}),
city:payload.Address.City,
PostCode:payload.Address.Postcode
}
干杯
{
DeliveryAddress: {
(payload.Address.*Street map {
("DA" ++ $$ +1): $
}),
City: payload.Address.City,
Postcode: payload.Address.Postcode
}
}
使用地图在街道元素上迭代
DA++$$+1以打印DA1、DA2等。
谢谢你解释得这么好,它工作得很好!
(payload.Address.*Street map {
("DA" ++ $$ + 1): $
}),
city:payload.Address.City,
PostCode:payload.Address.Postcode
{
DeliveryAddress: {
(payload.Address.*Street map {
("DA" ++ $$ +1): $
}),
City: payload.Address.City,
Postcode: payload.Address.Postcode
}
}