使用dataweave 2递归解析XML以创建JSON数组

如何解决使用dataweave 2递归解析XML以创建JSON数组

我正在尝试递归解析XML以使用dataweave 2创建JSON数组,但是我无法做到这一点。

我的输入XML如下-

<?xml version="1.0" encoding="UTF-8"?>
<Envelope xmlns="http://schemas.microsoft.com/dynamics/2011/01/documents/Message">
    <Header>
        <MessageId>{8736346D-A766-4BE1-8592-C263A4CC2AB5}</MessageId>
        <Action>http://schemas.microsoft.com/dynamics/2008/01/services/BomBillsofMaterialsService/read</Action>
    </Header>
    <Body>
        <MessageParts xmlns="http://schemas.microsoft.com/dynamics/2011/01/documents/Message">
            <BillsOfMaterials xmlns="http://schemas.microsoft.com/dynamics/2008/01/documents/BillsOfMaterials">
                <DocPurpose>Original</DocPurpose>
                <SenderId>121</SenderId>
                <BOMVersion class="entity">
                    <_DocumentHash>5c32768c0e32d542255d67340fda7a9d</_DocumentHash>
                    <Active>Yes</Active>
                    <Approved>Yes</Approved>
                    <Approver>NoUser</Approver>
                    <BOMId>BOM0012610</BOMId>
                    <Construction>No</Construction>
                    <InventDimId>IDM0000001</InventDimId>
                    <ItemId>9641716</ItemId>
                    <ItemIdCommercial/>
                    <Name>Prepress Bundle - Folding Carton</Name>
                    <QBE_AddedByContainer>Yes</QBE_AddedByContainer>
                    <RecId>5637161354</RecId>
                    <RecVersion>1034011536</RecVersion>
                    <BOMTable class="entity">
                        <Approved>Yes</Approved>
                        <Approver>NoUser</Approver>
                        <BOMId>BOM0012610</BOMId>
                        <CheckBOM>Yes</CheckBOM>
                        <Name>Prepress Bundle - Folding Carton</Name>
                        <RecId>5637160605</RecId>
                        <RecVersion>450200996</RecVersion>
                        <SiteId>2</SiteId>
                        <BOM class="entity">
                            <BOMConsump>Variable</BOMConsump>
                            <BOMId>BOM0012610</BOMId>
                            <BOMQty>1.0000</BOMQty>
                            <BOMQtySerie>1</BOMQtySerie>
                            <BOMType>Item</BOMType>
                            <Calculation>Yes</Calculation>
                            <EndSchedConsump>No</EndSchedConsump>
                            <Formula>Formula0</Formula>
                            <InventDimId>IDM0000031</InventDimId>
                            <ItemId>96AR169X</ItemId>
                            <LineNum>1.0000000000</LineNum>
                            <ProdFlushingPrincip>Blank</ProdFlushingPrincip>
                            <ProjSetSubProdToConsumed>No</ProjSetSubProdToConsumed>
                            <RecId>5637300477</RecId>
                            <RecVersion>1</RecVersion>
                            <RoundUp>No</RoundUp>
                            <UnitId>PCS</UnitId>
                            <WrkCtrConsumption>false</WrkCtrConsumption>
                            <InventDimBOM class="entity">
                                <InventDimId>IDM0000031</InventDimId>
                                <InventLocationId>51ST</InventLocationId>
                                <InventSiteId>2</InventSiteId>
                                <RecId>5637213319</RecId>
                                <RecVersion>1</RecVersion>
                            </InventDimBOM>
                            <BOMTable>
                                <BOMId>BOM011986</BOMId>
                                
                                <Name/>
                                <Approved>Yes</Approved>
                                <BOM>
                                    <LineNum>1.00</LineNum>
                                    <BOMType>Item</BOMType>
                                    <ItemId>96AR060W</ItemId>
                                    <BOMQty>1.00</BOMQty>
                                    <OprNum>0</OprNum>
                                    <FromDate>1900-01-01</FromDate>
                                    <UnitId>PCS</UnitId>
                                    <RecId>111111111</RecId>
                                </BOM>
                                <BOM>
                                    <LineNum>2.00</LineNum>
                                    <BOMType>Item</BOMType>
                                    <ItemId>96AR158</ItemId>
                                    <BOMQty>1.00</BOMQty>
                                    <OprNum>0</OprNum>
                                    <FromDate>1900-01-01</FromDate>
                                    <UnitId>PCS</UnitId>
                                    <RecId>222222</RecId>
                                </BOM>
                                <BOM>
                                    <LineNum>3.00</LineNum>
                                    <BOMType>Item</BOMType>
                                    <ItemId>96AR582O</ItemId>
                                    <BOMQty>1.00</BOMQty>
                                    <OprNum>0</OprNum>
                                    <FromDate>1900-01-01</FromDate>
                                    <UnitId>PCS</UnitId>
                                    <RecId>333333333</RecId>
                                    <BOMTable>
                                        <BOMId>BOM0013773</BOMId>
                                        <Name>ArtiosCAD 14 A6 Software box (Standard Edition)</Name>
                                        <Approved>Yes</Approved>
                                        
                                        <BOM>
                                            <LineNum>1000.00</LineNum>
                                            <BOMType>Item</BOMType>
                                            <ItemId>G211249</ItemId>
                                            <BOMQty>1.00</BOMQty>
                                            <OprNum>0</OprNum>
                                            <FromDate>1900-01-01</FromDate>
                                            <UnitId>PCS</UnitId>
                                            <RecId>4444444</RecId>
                                        </BOM>
                                        <BOM>
                                            <LineNum>1006.00</LineNum>
                                            <BOMType>Item</BOMType>
                                            <ItemId>G25583954_46</ItemId>
                                            <BOMQty>1.00</BOMQty>
                                            <OprNum>0</OprNum>
                                            <FromDate>1900-01-01</FromDate>
                                            <UnitId>PCS</UnitId>
                                            <RecId>55555555</RecId>
                                        </BOM>
                                    </BOMTable>
                                    <BOMTable>
                                        <BOMId>BOM0013773</BOMId>
                                        <Name>ArtiosCAD 14 A6 Software box (Standard Edition)</Name>
                                        <Approved>Yes</Approved>
                                        <RecId>333333333</RecId>
                                        <BOM>
                                            <LineNum>1000.00</LineNum>
                                            <BOMType>Item</BOMType>
                                            <ItemId>G211249</ItemId>
                                            <BOMQty>1.00</BOMQty>
                                            <OprNum>0</OprNum>
                                            <FromDate>1900-01-01</FromDate>
                                            <UnitId>PCS</UnitId>
                                            <RecId>66666666</RecId>
                                        </BOM>
                                        <BOM>
                                            <LineNum>1006.00</LineNum>
                                            <BOMType>Item</BOMType>
                                            <ItemId>G25583954_46</ItemId>
                                            <BOMQty>1.00</BOMQty>
                                            <OprNum>0</OprNum>
                                            <FromDate>1900-01-01</FromDate>
                                            <UnitId>PCS</UnitId>
                                            <RecId>77777777777</RecId>
                                        </BOM>
                                    </BOMTable>
                                </BOM>
                            </BOMTable>
                        </BOM>
                        <BOM class="entity">
                            <BOMConsump>Variable</BOMConsump>
                            <BOMId>BOM0012610</BOMId>
                            <BOMQty>1.0000</BOMQty>
                            <BOMQtySerie>1</BOMQtySerie>
                            <BOMType>Item</BOMType>
                            <Calculation>Yes</Calculation>
                            <EndSchedConsump>No</EndSchedConsump>
                            <Formula>Formula0</Formula>
                            <InventDimId>IDM0000002</InventDimId>
                            <ItemId>9646095W</ItemId>
                            <LineNum>11.0000000000</LineNum>
                            <ProdFlushingPrincip>Blank</ProdFlushingPrincip>
                            <ProjSetSubProdToConsumed>No</ProjSetSubProdToConsumed>
                            <RecId>5637300487</RecId>
                            <RecVersion>1</RecVersion>
                            <RoundUp>No</RoundUp>
                            <UnitId>PCS</UnitId>
                            <WrkCtrConsumption>false</WrkCtrConsumption>
                            <InventDimBOM class="entity">
                                <InventDimId>IDM0000002</InventDimId>
                                <InventLocationId>NOLOC</InventLocationId>
                                <InventSiteId>2</InventSiteId>
                                <RecId>5637213290</RecId>
                                <RecVersion>1</RecVersion>
                            </InventDimBOM>
                        </BOM>
                        <BOM class="entity">
                            <BOMConsump>Variable</BOMConsump>
                            <BOMId>BOM0012610</BOMId>
                            <BOMQty>1.0000</BOMQty>
                            <BOMQtySerie>1</BOMQtySerie>
                            <BOMType>Item</BOMType>
                            <Calculation>Yes</Calculation>
                            <EndSchedConsump>No</EndSchedConsump>
                            <Formula>Formula0</Formula>
                            <InventDimId>IDM0000002</InventDimId>
                            <ItemId>9648376X</ItemId>
                            <LineNum>12.0000000000</LineNum>
                            <ProdFlushingPrincip>Blank</ProdFlushingPrincip>
                            <ProjSetSubProdToConsumed>No</ProjSetSubProdToConsumed>
                            <RecId>5637300488</RecId>
                            <RecVersion>1</RecVersion>
                            <RoundUp>No</RoundUp>
                            <UnitId>PCS</UnitId>
                            <WrkCtrConsumption>false</WrkCtrConsumption>
                            <InventDimBOM class="entity">
                                <InventDimId>IDM0000002</InventDimId>
                                <InventLocationId>NOLOC</InventLocationId>
                                <InventSiteId>2</InventSiteId>
                                <RecId>5637213290</RecId>
                                <RecVersion>1</RecVersion>
                            </InventDimBOM>
                            <BOMTable>
                                <BOMId>BOM011638</BOMId>
                                <Name/>
                                <Approved>Yes</Approved>
                                
                                <BOM>
                                    <LineNum>1.00</LineNum>
                                    <BOMType>Item</BOMType>
                                    <ItemId>9645340X</ItemId>
                                    <BOMQty>1.00</BOMQty>
                                    <OprNum>0</OprNum>
                                    <FromDate>1900-01-01</FromDate>
                                    <UnitId>PCS</UnitId>
                                    <RecId>888888888</RecId>
                                </BOM>
                                <BOM>
                                    <LineNum>2.00</LineNum>
                                    <BOMType>Item</BOMType>
                                    <ItemId>9644384Y</ItemId>
                                    <BOMQty>1.00</BOMQty>
                                    <OprNum>0</OprNum>
                                    <FromDate>1900-01-01</FromDate>
                                    <UnitId>PCS</UnitId>
                                    <RecId>9999999999</RecId>
                                </BOM>
                            </BOMTable>
                        </BOM>
                        <BOM class="entity">
                            <BOMConsump>Variable</BOMConsump>
                            <BOMId>BOM0012610</BOMId>
                            <BOMQty>1.0000</BOMQty>
                            <BOMQtySerie>1</BOMQtySerie>
                            <BOMType>Item</BOMType>
                            <Calculation>Yes</Calculation>
                            <EndSchedConsump>No</EndSchedConsump>
                            <Formula>Formula0</Formula>
                            <InventDimId>IDM0000003</InventDimId>
                            <ItemId>9643908X</ItemId>
                            <LineNum>13.0000000000</LineNum>
                            <ProdFlushingPrincip>Blank</ProdFlushingPrincip>
                            <ProjSetSubProdToConsumed>No</ProjSetSubProdToConsumed>
                            <RecId>5637300489</RecId>
                            <RecVersion>1</RecVersion>
                            <RoundUp>No</RoundUp>
                            <UnitId>PCS</UnitId>
                            <WrkCtrConsumption>false</WrkCtrConsumption>
                            <InventDimBOM class="entity">
                                <InventDimId>IDM0000003</InventDimId>
                                <InventLocationId>01</InventLocationId>
                                <InventSiteId>2</InventSiteId>
                                <RecId>5637213291</RecId>
                                <RecVersion>1</RecVersion>
                            </InventDimBOM>
                            <BOMTable>
                                <BOMId>BOM011299</BOMId>
                                <Name/>
                                <Approved>Yes</Approved>
                                <RecId>555555555</RecId>
                                <BOM>
                                    <LineNum>1.00</LineNum>
                                    <BOMType>Item</BOMType>
                                    <ItemId>9642737Y</ItemId>
                                    <BOMQty>1.00</BOMQty>
                                    <OprNum>0</OprNum>
                                    <FromDate>1900-01-01</FromDate>
                                    <UnitId>PCS</UnitId>
                                    <RecId>101010101</RecId>
                                </BOM>
                                <BOM>
                                    <LineNum>3.00</LineNum>
                                    <BOMType>Item</BOMType>
                                    <ItemId>9642736Y</ItemId>
                                    <BOMQty>1.00</BOMQty>
                                    <OprNum>0</OprNum>
                                    <FromDate>1900-01-01</FromDate>
                                    <UnitId>PCS</UnitId>
                                    <RecId>1112112112</RecId>
                                </BOM>
                            </BOMTable>
                        </BOM>
                        <BOM class="entity">
                            <BOMConsump>Variable</BOMConsump>
                            <BOMId>BOM0012610</BOMId>
                            <BOMQty>1.0000</BOMQty>
                            <BOMQtySerie>1</BOMQtySerie>
                            <BOMType>Item</BOMType>
                            <Calculation>Yes</Calculation>
                            <EndSchedConsump>No</EndSchedConsump>
                            <Formula>Formula0</Formula>
                            <InventDimId>IDM0000003</InventDimId>
                            <ItemId>9642837X</ItemId>
                            <LineNum>14.0000000000</LineNum>
                            <ProdFlushingPrincip>Blank</ProdFlushingPrincip>
                            <ProjSetSubProdToConsumed>No</ProjSetSubProdToConsumed>
                            <RecId>5637300490</RecId>
                            <RecVersion>1</RecVersion>
                            <RoundUp>No</RoundUp>
                            <UnitId>PCS</UnitId>
                            <WrkCtrConsumption>false</WrkCtrConsumption>
                            <InventDimBOM class="entity">
                                <InventDimId>IDM0000003</InventDimId>
                                <InventLocationId>01</InventLocationId>
                                <InventSiteId>2</InventSiteId>
                                <RecId>5637213291</RecId>
                                <RecVersion>1</RecVersion>
                            </InventDimBOM>
                            <BOMTable>
                                <BOMId>BOM011245</BOMId>
                                <Name/>
                                <Approved>Yes</Approved>
                                
                                <BOM>
                                    <LineNum>1.00</LineNum>
                                    <BOMType>Item</BOMType>
                                    <ItemId>9644384Y</ItemId>
                                    <BOMQty>-1.00</BOMQty>
                                    <OprNum>0</OprNum>
                                    <FromDate>1900-01-01</FromDate>
                                    <UnitId>PCS</UnitId>
                                    <RecId>13131313</RecId>
                                </BOM>
                            </BOMTable>
                        </BOM>
                    </BOMTable>
                    <InventDim class="entity">
                        <InventDimId>IDM0000001</InventDimId>
                        <InventSiteId>2</InventSiteId>
                        <RecId>5637199988</RecId>
                        <RecVersion>1</RecVersion>
                    </InventDim>
                </BOMVersion>
            </BillsOfMaterials>
        </MessageParts>
    </Body>
</Envelope>

我要创建所有BOM的JSON数组(无层次结构的扁平结构),如下所示-

输出-


[
{
  "id": "5637300477","productId": "96AR169X","parentId": null     
},{
  "id":  "111111111","productId":  "96AR060W","parentId" : "BOM011986" 
},{
  "id":  "222222","productId":  "96AR158",{
  "id": "333333333","productId": "96AR582O","parentId": "BOM011986"    
},{
  "id":  "4444444","productId":  "G211249","parentId" : "BOM0013773" 
},{
  "id":  "55555555","productId":  "G25583954_46",{
  "id":  "66666666","productId":  "BOM0013773",{
  "id":  "77777777777",{
  "id":  "5637300487","productId":  "9646095W","parentId" : null
},{
  "id":  "5637300488","productId":  "9648376X","parentId" : null 
},.

]

在这种情况下,我无法弄清楚递归的使用。 我对Dataweave语言很陌生,因为它是功能语言。我已经习惯了Java语言。

在此先感谢您的帮助!

解决方法

可以请您尝试下面的dwl

%dw 2.0
output application/json
var payload = read('<?xml version="1.0" encoding="UTF-8"?>
<Envelope xmlns="http://schemas.microsoft.com/dynamics/2011/01/documents/Message">
<Header>
    <MessageId>{8736346D-A766-4BE1-8592-C263A4CC2AB5}</MessageId>
    <Action>http://schemas.microsoft.com/dynamics/2008/01/services/BomBillsofMaterialsService/read</Action>
</Header>
<Body>
    <MessageParts xmlns="http://schemas.microsoft.com/dynamics/2011/01/documents/Message">
        <BillsOfMaterials xmlns="http://schemas.microsoft.com/dynamics/2008/01/documents/BillsOfMaterials">
            <DocPurpose>Original</DocPurpose>
            <SenderId>121</SenderId>
            <BOMVersion class="entity">
                <_DocumentHash>5c32768c0e32d542255d67340fda7a9d</_DocumentHash>
                <Active>Yes</Active>
                <Approved>Yes</Approved>
                <Approver>NoUser</Approver>
                <BOMId>BOM0012610</BOMId>
                <Construction>No</Construction>
                <InventDimId>IDM0000001</InventDimId>
                <ItemId>9641716</ItemId>
                <ItemIdCommercial/>
                <Name>Prepress Bundle - Folding Carton</Name>
                <QBE_AddedByContainer>Yes</QBE_AddedByContainer>
                <RecId>5637161354</RecId>
                <RecVersion>1034011536</RecVersion>
                <BOMTable class="entity">
                    <Approved>Yes</Approved>
                    <Approver>NoUser</Approver>
                    <BOMId>BOM0012610</BOMId>
                    <CheckBOM>Yes</CheckBOM>
                    <Name>Prepress Bundle - Folding Carton</Name>
                    <RecId>5637160605</RecId>
                    <RecVersion>450200996</RecVersion>
                    <SiteId>2</SiteId>
                    <BOM class="entity">
                        <BOMConsump>Variable</BOMConsump>
                        <BOMId>BOM0012610</BOMId>
                        <BOMQty>1.0000</BOMQty>
                        <BOMQtySerie>1</BOMQtySerie>
                        <BOMType>Item</BOMType>
                        <Calculation>Yes</Calculation>
                        <EndSchedConsump>No</EndSchedConsump>
                        <Formula>Formula0</Formula>
                        <InventDimId>IDM0000031</InventDimId>
                        <ItemId>96AR169X</ItemId>
                        <LineNum>1.0000000000</LineNum>
                        <ProdFlushingPrincip>Blank</ProdFlushingPrincip>
                        <ProjSetSubProdToConsumed>No</ProjSetSubProdToConsumed>
                        <RecId>5637300477</RecId>
                        <RecVersion>1</RecVersion>
                        <RoundUp>No</RoundUp>
                        <UnitId>PCS</UnitId>
                        <WrkCtrConsumption>false</WrkCtrConsumption>
                        <InventDimBOM class="entity">
                            <InventDimId>IDM0000031</InventDimId>
                            <InventLocationId>51ST</InventLocationId>
                            <InventSiteId>2</InventSiteId>
                            <RecId>5637213319</RecId>
                            <RecVersion>1</RecVersion>
                        </InventDimBOM>
                        <BOMTable>
                            <BOMId>BOM011986</BOMId>
                            
                            <Name/>
                            <Approved>Yes</Approved>
                            <BOM>
                                <LineNum>1.00</LineNum>
                                <BOMType>Item</BOMType>
                                <ItemId>96AR060W</ItemId>
                                <BOMQty>1.00</BOMQty>
                                <OprNum>0</OprNum>
                                <FromDate>1900-01-01</FromDate>
                                <UnitId>PCS</UnitId>
                                <RecId>111111111</RecId>
                            </BOM>
                            <BOM>
                                <LineNum>2.00</LineNum>
                                <BOMType>Item</BOMType>
                                <ItemId>96AR158</ItemId>
                                <BOMQty>1.00</BOMQty>
                                <OprNum>0</OprNum>
                                <FromDate>1900-01-01</FromDate>
                                <UnitId>PCS</UnitId>
                                <RecId>222222</RecId>
                            </BOM>
                            <BOM>
                                <LineNum>3.00</LineNum>
                                <BOMType>Item</BOMType>
                                <ItemId>96AR582O</ItemId>
                                <BOMQty>1.00</BOMQty>
                                <OprNum>0</OprNum>
                                <FromDate>1900-01-01</FromDate>
                                <UnitId>PCS</UnitId>
                                <RecId>333333333</RecId>
                                <BOMTable>
                                    <BOMId>BOM0013773</BOMId>
                                    <Name>ArtiosCAD 14 A6 Software box (Standard Edition)</Name>
                                    <Approved>Yes</Approved>
                                    
                                    <BOM>
                                        <LineNum>1000.00</LineNum>
                                        <BOMType>Item</BOMType>
                                        <ItemId>G211249</ItemId>
                                        <BOMQty>1.00</BOMQty>
                                        <OprNum>0</OprNum>
                                        <FromDate>1900-01-01</FromDate>
                                        <UnitId>PCS</UnitId>
                                        <RecId>4444444</RecId>
                                    </BOM>
                                    <BOM>
                                        <LineNum>1006.00</LineNum>
                                        <BOMType>Item</BOMType>
                                        <ItemId>G25583954_46</ItemId>
                                        <BOMQty>1.00</BOMQty>
                                        <OprNum>0</OprNum>
                                        <FromDate>1900-01-01</FromDate>
                                        <UnitId>PCS</UnitId>
                                        <RecId>55555555</RecId>
                                    </BOM>
                                </BOMTable>
                                <BOMTable>
                                    <BOMId>BOM0013773</BOMId>
                                    <Name>ArtiosCAD 14 A6 Software box (Standard Edition)</Name>
                                    <Approved>Yes</Approved>
                                    <RecId>333333333</RecId>
                                    <BOM>
                                        <LineNum>1000.00</LineNum>
                                        <BOMType>Item</BOMType>
                                        <ItemId>G211249</ItemId>
                                        <BOMQty>1.00</BOMQty>
                                        <OprNum>0</OprNum>
                                        <FromDate>1900-01-01</FromDate>
                                        <UnitId>PCS</UnitId>
                                        <RecId>66666666</RecId>
                                    </BOM>
                                    <BOM>
                                        <LineNum>1006.00</LineNum>
                                        <BOMType>Item</BOMType>
                                        <ItemId>G25583954_46</ItemId>
                                        <BOMQty>1.00</BOMQty>
                                        <OprNum>0</OprNum>
                                        <FromDate>1900-01-01</FromDate>
                                        <UnitId>PCS</UnitId>
                                        <RecId>77777777777</RecId>
                                    </BOM>
                                </BOMTable>
                            </BOM>
                        </BOMTable>
                    </BOM>
                    <BOM class="entity">
                        <BOMConsump>Variable</BOMConsump>
                        <BOMId>BOM0012610</BOMId>
                        <BOMQty>1.0000</BOMQty>
                        <BOMQtySerie>1</BOMQtySerie>
                        <BOMType>Item</BOMType>
                        <Calculation>Yes</Calculation>
                        <EndSchedConsump>No</EndSchedConsump>
                        <Formula>Formula0</Formula>
                        <InventDimId>IDM0000002</InventDimId>
                        <ItemId>9646095W</ItemId>
                        <LineNum>11.0000000000</LineNum>
                        <ProdFlushingPrincip>Blank</ProdFlushingPrincip>
                        <ProjSetSubProdToConsumed>No</ProjSetSubProdToConsumed>
                        <RecId>5637300487</RecId>
                        <RecVersion>1</RecVersion>
                        <RoundUp>No</RoundUp>
                        <UnitId>PCS</UnitId>
                        <WrkCtrConsumption>false</WrkCtrConsumption>
                        <InventDimBOM class="entity">
                            <InventDimId>IDM0000002</InventDimId>
                            <InventLocationId>NOLOC</InventLocationId>
                            <InventSiteId>2</InventSiteId>
                            <RecId>5637213290</RecId>
                            <RecVersion>1</RecVersion>
                        </InventDimBOM>
                    </BOM>
                    <BOM class="entity">
                        <BOMConsump>Variable</BOMConsump>
                        <BOMId>BOM0012610</BOMId>
                        <BOMQty>1.0000</BOMQty>
                        <BOMQtySerie>1</BOMQtySerie>
                        <BOMType>Item</BOMType>
                        <Calculation>Yes</Calculation>
                        <EndSchedConsump>No</EndSchedConsump>
                        <Formula>Formula0</Formula>
                        <InventDimId>IDM0000002</InventDimId>
                        <ItemId>9648376X</ItemId>
                        <LineNum>12.0000000000</LineNum>
                        <ProdFlushingPrincip>Blank</ProdFlushingPrincip>
                        <ProjSetSubProdToConsumed>No</ProjSetSubProdToConsumed>
                        <RecId>5637300488</RecId>
                        <RecVersion>1</RecVersion>
                        <RoundUp>No</RoundUp>
                        <UnitId>PCS</UnitId>
                        <WrkCtrConsumption>false</WrkCtrConsumption>
                        <InventDimBOM class="entity">
                            <InventDimId>IDM0000002</InventDimId>
                            <InventLocationId>NOLOC</InventLocationId>
                            <InventSiteId>2</InventSiteId>
                            <RecId>5637213290</RecId>
                            <RecVersion>1</RecVersion>
                        </InventDimBOM>
                        <BOMTable>
                            <BOMId>BOM011638</BOMId>
                            <Name/>
                            <Approved>Yes</Approved>
                            
                            <BOM>
                                <LineNum>1.00</LineNum>
                                <BOMType>Item</BOMType>
                                <ItemId>9645340X</ItemId>
                                <BOMQty>1.00</BOMQty>
                                <OprNum>0</OprNum>
                                <FromDate>1900-01-01</FromDate>
                                <UnitId>PCS</UnitId>
                                <RecId>888888888</RecId>
                            </BOM>
                            <BOM>
                                <LineNum>2.00</LineNum>
                                <BOMType>Item</BOMType>
                                <ItemId>9644384Y</ItemId>
                                <BOMQty>1.00</BOMQty>
                                <OprNum>0</OprNum>
                                <FromDate>1900-01-01</FromDate>
                                <UnitId>PCS</UnitId>
                                <RecId>9999999999</RecId>
                            </BOM>
                        </BOMTable>
                    </BOM>
                    <BOM class="entity">
                        <BOMConsump>Variable</BOMConsump>
                        <BOMId>BOM0012610</BOMId>
                        <BOMQty>1.0000</BOMQty>
                        <BOMQtySerie>1</BOMQtySerie>
                        <BOMType>Item</BOMType>
                        <Calculation>Yes</Calculation>
                        <EndSchedConsump>No</EndSchedConsump>
                        <Formula>Formula0</Formula>
                        <InventDimId>IDM0000003</InventDimId>
                        <ItemId>9643908X</ItemId>
                        <LineNum>13.0000000000</LineNum>
                        <ProdFlushingPrincip>Blank</ProdFlushingPrincip>
                        <ProjSetSubProdToConsumed>No</ProjSetSubProdToConsumed>
                        <RecId>5637300489</RecId>
                        <RecVersion>1</RecVersion>
                        <RoundUp>No</RoundUp>
                        <UnitId>PCS</UnitId>
                        <WrkCtrConsumption>false</WrkCtrConsumption>
                        <InventDimBOM class="entity">
                            <InventDimId>IDM0000003</InventDimId>
                            <InventLocationId>01</InventLocationId>
                            <InventSiteId>2</InventSiteId>
                            <RecId>5637213291</RecId>
                            <RecVersion>1</RecVersion>
                        </InventDimBOM>
                        <BOMTable>
                            <BOMId>BOM011299</BOMId>
                            <Name/>
                            <Approved>Yes</Approved>
                            <RecId>555555555</RecId>
                            <BOM>
                                <LineNum>1.00</LineNum>
                                <BOMType>Item</BOMType>
                                <ItemId>9642737Y</ItemId>
                                <BOMQty>1.00</BOMQty>
                                <OprNum>0</OprNum>
                                <FromDate>1900-01-01</FromDate>
                                <UnitId>PCS</UnitId>
                                <RecId>101010101</RecId>
                            </BOM>
                            <BOM>
                                <LineNum>3.00</LineNum>
                                <BOMType>Item</BOMType>
                                <ItemId>9642736Y</ItemId>
                                <BOMQty>1.00</BOMQty>
                                <OprNum>0</OprNum>
                                <FromDate>1900-01-01</FromDate>
                                <UnitId>PCS</UnitId>
                                <RecId>1112112112</RecId>
                            </BOM>
                        </BOMTable>
                    </BOM>
                    <BOM class="entity">
                        <BOMConsump>Variable</BOMConsump>
                        <BOMId>BOM0012610</BOMId>
                        <BOMQty>1.0000</BOMQty>
                        <BOMQtySerie>1</BOMQtySerie>
                        <BOMType>Item</BOMType>
                        <Calculation>Yes</Calculation>
                        <EndSchedConsump>No</EndSchedConsump>
                        <Formula>Formula0</Formula>
                        <InventDimId>IDM0000003</InventDimId>
                        <ItemId>9642837X</ItemId>
                        <LineNum>14.0000000000</LineNum>
                        <ProdFlushingPrincip>Blank</ProdFlushingPrincip>
                        <ProjSetSubProdToConsumed>No</ProjSetSubProdToConsumed>
                        <RecId>5637300490</RecId>
                        <RecVersion>1</RecVersion>
                        <RoundUp>No</RoundUp>
                        <UnitId>PCS</UnitId>
                        <WrkCtrConsumption>false</WrkCtrConsumption>
                        <InventDimBOM class="entity">
                            <InventDimId>IDM0000003</InventDimId>
                            <InventLocationId>01</InventLocationId>
                            <InventSiteId>2</InventSiteId>
                            <RecId>5637213291</RecId>
                            <RecVersion>1</RecVersion>
                        </InventDimBOM>
                        <BOMTable>
                            <BOMId>BOM011245</BOMId>
                            <Name/>
                            <Approved>Yes</Approved>
                            
                            <BOM>
                                <LineNum>1.00</LineNum>
                                <BOMType>Item</BOMType>
                                <ItemId>9644384Y</ItemId>
                                <BOMQty>-1.00</BOMQty>
                                <OprNum>0</OprNum>
                                <FromDate>1900-01-01</FromDate>
                                <UnitId>PCS</UnitId>
                                <RecId>13131313</RecId>
                            </BOM>
                        </BOMTable>
                    </BOM>
                </BOMTable>
                <InventDim class="entity">
                    <InventDimId>IDM0000001</InventDimId>
                    <InventSiteId>2</InventSiteId>
                    <RecId>5637199988</RecId>
                    <RecVersion>1</RecVersion>
                </InventDim>
            </BOMVersion>
        </BillsOfMaterials>
    </MessageParts>
</Body>
</Envelope>',"application/xml")
 ---
flatten((payload.Envelope.Body.MessageParts.BillsOfMaterials.BOMVersion..*BOMTable map 
{
 BOMTable : $.*BOM map (val) -> {
    "id": val.RecId,"productId": val.ItemId,parentId : $.RecId
}
}).*BOMTable)

输出为

[
{
"id": "5637300477","productId": "96AR169X","parentId": "5637160605"
},{
"id": "5637300487","productId": "9646095W",{
"id": "5637300488","productId": "9648376X",{
"id": "5637300489","productId": "9643908X",{
"id": "5637300490","productId": "9642837X",{
"id": "111111111","productId": "96AR060W","parentId": null
},{
"id": "222222","productId": "96AR158",{
"id": "333333333","productId": "96AR582O",{
"id": "4444444","productId": "G211249",{
"id": "55555555","productId": "G25583954_46",{
"id": "66666666","parentId": "333333333"
},{
"id": "77777777777",{
"id": "888888888","productId": "9645340X",{
"id": "9999999999","productId": "9644384Y",{
"id": "101010101","productId": "9642737Y","parentId": "555555555"
},{
"id": "1112112112","productId": "9642736Y",{
"id": "13131313","parentId": null
}
]
,

您可以使用后代数据选择器(使用..)从xml文档中检索所有BOMTable,因此无需递归浏览文档。然后使用map / flatMap输出必要的字段。

请参见下面的数据编织:

%dw 2.0
output application/json

---
  
payload..*BOMTable flatMap (bomTable) -> bomTable.*BOM map (bomValue) -> 
{
    id: bomValue.RecId,productId: bomValue.ItemId,parentId: bomTable.RecId
}

输出如下:

[
  {
    "id": "5637300477","parentId": "5637160605"
  },{
    "id": "5637300487",{
    "id": "5637300488",{
    "id": "5637300489",{
    "id": "5637300490",{
    "id": "111111111","parentId": null
  },{
    "id": "222222",{
    "id": "333333333",{
    "id": "4444444",{
    "id": "55555555",{
    "id": "66666666","parentId": "333333333"
  },{
    "id": "77777777777",{
    "id": "888888888",{
    "id": "9999999999",{
    "id": "101010101","parentId": "555555555"
  },{
    "id": "1112112112",{
    "id": "13131313","parentId": null
  }
]

请注意,根据您在评论之一中发布的映射规则,输出仍与您发布的预期输出不同,我认为这是不正确的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-