最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

mule - Converting XML to CSV using dataweave - Stack Overflow

programmeradmin2浏览0评论

I have a requirement to convert xml to csv file, however I need to follow following points

  1. In case of nested tags, the output should have all the nested tags key with . separated.

example: ReferenceNums.Reference

    <ReferenceNums>
      <Reference type="shiprefnum">124215133</Reference>
    </ReferenceNums>
  1. The xml file has header and details, the csv file should have same number of rows as per details and header values will be repeated for each detail line.

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,

}
发布评论

评论列表(0)

  1. 暂无评论