[英]Mule Dataweave Repeating XML Elements to Individually Named XML Elements
輸入XML
<Address>
<Street>Street Line 1</Street>
<Street>Street Line 2</Street>
<Street>Street Line 3</Street>
<City>City</City>
<Postcode>0000</Postcode>
</Address>
需要輸出XML
<DeliveryAddress>
<DA1>Street Line 1</DA1>
<DA2>Street Line 2</DA2>
<DA3>Street Line 3</DA3>
<City>City</City>
<Postcode>0000</Postcode>
</DeliveryAddress>
如何使用Dataweave將每個街道元素放入出站XML中的特定DA元素?
我嘗試使用*通配符(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>
請幫忙^ _ ^
*通配符用於引用重復的元素,尤其是XML格式的元素。 從這一點開始,我們可以順序解決此問題:
payload.Address.*Street
開始,我們將獲得街道列表。 (payload.Address.*Street)
,使其成為對象而不是數組。 () or '' or ""
將輸出的鍵括起來: ("DA" ++ $$ + 1)
或"DA$($$ + 1)"
均返回相同的結果:DA1,DA2,DA3,...
因此,此字段的完整表達式應為: (payload.Address.*Street map { ("DA" ++ $$ + 1): $ })
根據我剛剛在下面復制的Suthony輸入,您可以找到dwl腳本
%dw 1.0
郵寄地址:{
(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等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.