Reputation: 109
I have a requirement to convert xml to csv file, however I need to follow following points
example: ReferenceNums.Reference
<ReferenceNums>
<Reference type="shiprefnum">124215133</Reference>
</ReferenceNums>
Sample XML:
<?xml version='1.0' encoding='UTF-8'?>
<LeanXML batchref="583628866.tiff" created="201801160501">
<DocumentUpload>
<ShipperRef>12358673_SF_00010</ShipperRef>
<ReferenceNums>
<Reference type="shiprefnum">124215133</Reference>
</ReferenceNums>
<ChargeHeader>
<CurrencyCode>USD</CurrencyCode>
<NetTotal>500.00</NetTotal>
<ChargeDetails>
<ChargeDetail ChargeCodeID="BAS" Description="BASIS ITEM">
<Net>500.00</Net>
</ChargeDetail>
</ChargeDetails>
</ChargeHeader>
<Equipment code="53V" type="Van">53 VAN</Equipment>
<OrderLineItems>
<OrderLineItem>
<ProductID>951-000433-001</ProductID>
<Barcode>0192472022595</Barcode>
</OrderLineItem>
<OrderLineItem>
<ProductID>951-000433-002</ProductID>
<Barcode>0192472022593</Barcode>
</OrderLineItem>
</OrderLineItems>
</DocumentUpload>
</LeanXML>
Expected output
ShipperRef|ShipmentLegSeq|ReferenceNums.Reference.shiprefnum|ChargeHeader.CurrencyCode|ChargeHeader.NetTotal|ChargeHeader.ChargeDetails.ChargeDetail.ChargeCodeID|ChargeHeader.ChargeDetails.ChargeDetail.Description|ChargeHeader.ChargeDetails.ChargeDetail.Net|Equipment|OrderLineItems.OrderLineItem.ProductID|OrderLineItems.OrderLineItem.Barcode
12358673_SF_00010||124215133|USD|500.00|BAS|BASIS ITEM|500.00|53 VAN|951-000433-001|0192472022595
12358673_SF_00010||124215133|USD|500.00|BAS|BASIS ITEM|500.00|53 VAN|951-000433-002|0192472022593
Code I tried:
%dw 2.0
output application/csv separator='|'
---
payload.LeanXML.*DocumentUpload flatMap (item) -> item.OrderLineItems.*OrderLineItem map (item1) ->
{ShipperRef: item.ShipperRef,
ShipmentLegSeq: item.ShipmentLegSeq,
(item.ReferenceNums mapObject ((value, key) -> {
("ReferenceNums." ++ key ++ "." ++ (key[@'type']) ) : value
})),
(item.Carrier mapObject ((value, key) -> {
("Carrier." ++ key ) : value
})),
(item.ChargeHeader mapObject ((value, key) -> {
("ChargeHeader." ++ key ) : value
})),
"Equipment": item.Equipment,
"OrderLineItems.OrderLineItem.ProductID": item1.ProductID,
"OrderLineItems.OrderLineItem.Barcode": item1.Barcode,
}
Upvotes: -1
Views: 44