Combiner des boucles imbriquées en une boucle simple
Convertissez une structure XML avec boucles imbriquées en une structure CSV plate en combinant des boucles imbriquées.
Avant de commencer
Pourquoi et quand exécuter cette tâche
Dans cet exemple, le fichier XML d'entrée contient des informations concernant une commande. Chaque élément Address contient un élément Items, contenant au moins un élément Item. L'objectif de la transformation est d'avoir un fichier CSV avec une ligne pour chaque élément Item. Chaque ligne doit également contenir les informations d'expédition.
Cet exemple utilise l'échantillon XML suivant en entrée :
<PurchaseOrderShipping PurchaseOrderNumber="99503" OrderDate="2011-03-15T12:10:03+05:30">
<ShipDate>2011-04-30T23:50:00+05:30</ShipDate>
<Address>
<Name>Deandre King</Name>
<Street>4894 Winding Way</Street>
<City>Southfield</City>
<State>MI</State>
<Zip>48075</Zip>
<Country>USA</Country>
<DeliveryNotes>Please leave packages in shed by driveway.</DeliveryNotes>
<Items>
<Item PartNumber="872-AA">
<ProductName>Lawnmower</ProductName>
<Quantity>1</Quantity>
<USPrice>148.95</USPrice>
<Comment>Confirm this is electric</Comment>
</Item>
<Item PartNumber="926-AA">
<ProductName>Baby Monitor</ProductName>
<Quantity>2</Quantity>
<USPrice>39.98</USPrice>
</Item>
</Items>
</Address>
<Address>
<Name>Burl Clark</Name>
<Street>3807 Pointe Lane</Street>
<City>Fort Lauderdale</City>
<State>FL</State>
<Zip>33308</Zip>
<Country>USA</Country>
<Items>
<Item PartNumber="356-KX">
<ProductName>Gas canister</ProductName>
<Quantity>1</Quantity>
<USPrice>123.02</USPrice>
</Item>
</Items>
</Address>
</PurchaseOrderShipping>
La structure de sortie est définie comme suit :
ItemsShipping
item (0:*)
PurchaseOrderNumber
ShipTo
ShipDate
PartNumber
ProductName
Quantity
USPrice
Procédure
Résultats
PurchaseOrderNumber,ShipTo,ShipDate,PartNumber,ProductName,Quantity,USPrice
99503,Deandre King 4894 Winding Way Southfield MI 48075 USA,2011-04-30T23:50:00+05:30,872-AA,Lawnmower,1,148.95
99503,Deandre King 4894 Winding Way Southfield MI 48075 USA,2011-04-30T23:50:00+05:30,926-AA,Baby Monitor,2,39.98
99503,Burl Clark 3807 Pointe Lane Fort Lauderdale FL 33308 USA,2011-04-30T23:50:00+05:30,356-KX,Gas canister,1,123.02