我有如下输入XML文件结构,我需要列出所有记录中的所有订单项。使用我的下面的代码我只获得一个记录的行项目 DWL:
%dw 1.0
%output application/java
---
payload.purchaseOrders.purchaseOrder.purchaseOrderLines.*purchaseOrderLine map ((podetail) -> {
ORIG_SYSTEM_REV_NUM:payload.purchaseOrders.purchaseOrder.revisionNumber,
ORIG_SYSTEM_STATUS: podetail.status,
ORIG_SYSTEM_LINE_REV_NUMBER:podetail.revisionNumber,
LINE_TYPE:podetail.lineType,
SKU_NUMBER:podetail.SkuNumber,
LANDING_TXN_STATUS:"NEW",
QUANTITY:podetail.quantity,
UNIT_COST:podetail.unitCost,
UOM:"EACH",
NEED_BY_DATE:podetail.needByDate,
START_SHIP_DATE:podetail.startShipDate,
PROMISE_DATE:podetail.dueDate,
CREATION_DATE: podetail.createdDate replace "T" with "" replace /(\.\d{1,3}Z)/ with "" as :string {format:'yyyy-MM-dd HH:mm:ss'},
CREATED_BY:null,
LAST_UPDATE_DATE: podetail.updatedDate replace "T" with "" replace /(\.\d{1,3}Z)/ with "" as :string {format:'yyyy-MM-dd HH:mm:ss'} when podetail.updatedDate != "" otherwise null,
LAST_UPDATED_BY:null,
LINE_CREATION_STATUS:null,
ATTRIBUTE1:null,
ATTRIBUTE2:null,
ATTRIBUTE3:null,
ATTRIBUTE4:null,
ATTRIBUTE5:null,
ATTRIBUTE6:null,
ATTRIBUTE7:null,
ATTRIBUTE8:null,
ATTRIBUTE9:null,
ATTRIBUTE10:null,
ATTRIBUTE11:null,
ORIG_SYSTEM_PO_NUMBER: payload.purchaseOrders.purchaseOrder.poNumber,
INVENTORY_ITEM_ID:null,
ORIG_SYSTEM_LINE_NUMBER:podetail.lineNumber
})`
Sample xml :
------------
<purchaseOrders>
<purchaseOrder>
<poNumber>1</poNumber>
<createdDate>2016-05-17T21:00:00-08:00</createdDate>
<updatedDate>2016-07-22T05:14:12-08:00</updatedDate>
<revisionNumber>1</revisionNumber>
<purchaseOrderLines>
<purchaseOrderLine>
<lineNumber>1</lineNumber>
<lineType>New</lineType>
<SkuNumber>100000208688</SkuNumber>
<status>Accepted</status>
<quantity>4</quantity>
<unitCost>85</unitCost>
<uom>ea</uom>
<needByDate>2016-12-12</needByDate>
<startShipDate>2016-11-20</startShipDate>
<dueDate>2016-11-30</dueDate>
<createdDate>2016-07-22T05:14:10-08:00</createdDate>
<updatedDate>2016-07-22T05:14:12-08:00</updatedDate>
<revisionNumber>1</revisionNumber>
</purchaseOrderLine>
</purchaseOrderLines>
</purchaseOrder>
<purchaseOrder>
<poNumber>2</poNumber>
<revisionNumber>1</revisionNumber>
<purchaseOrderLines>
<purchaseOrderLine>
<lineNumber>1</lineNumber>
<lineType>Stnd Sample</lineType>
<SkuNumber>100000220975</SkuNumber>
<status>Accepted</status>
<quantity>1</quantity>
<unitCost>40</unitCost>
<uom>ea</uom>
<needByDate>2016-11-28</needByDate>
<startShipDate>2016-11-11</startShipDate>
<dueDate>2016-11-18</dueDate>
<createdDate>2016-07-22T05:47:23-08:00</createdDate>
<updatedDate>2016-07-22T05:47:24-08:00</updatedDate>
<revisionNumber>1</revisionNumber>
</purchaseOrderLine>
</purchaseOrderLines>
</purchaseOrder>
<purchaseOrders>
如果有人有这个想法,请帮助我。
答案 0 :(得分:0)
在示例中,xml数据purchaseOrder
是purchaseOrders
内的重复元素,其中dataweave
代码将其视为single
元素,之前添加*
获取输入中所有元素的purchaseOrder
元素,如
payload.purchaseOrders.*purchaseOrder.purchaseOrderLines.*purchaseOrderLine map ((podetail) -> {