Accéder au contenu principal Passer au contenu complémentaire

Configurer le mapping

Utilisez des fonctions pour définir les transformations à effectuer sur vos structures. Les exemples suivants présentent des modèles de mappings complexes.

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.

Before you begin

Vous avez créé une map et ajouté une structure d'entrée et de sortie.

About this task

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

Procedure

  1. Glissez-déposez les éléments d'entrée PurchaseOrderNumber et ShipDate sur les éléments de sortie correspondants.
  2. Ouvrez l'onglet Functions et glissez la fonction Concat sur l'élément de sortie ShipTo.
    Cette fonction sera utilisée pour concaténer les différents éléments d'adresse de l'entrée en un seul élément de sortie.
  3. Glissez les éléments d'entrée suivants sur la fonction Concat dans l'onglet Value de l'élément de sortie ShipTo :
    • Name (Nom)
    • Street
    • City (ville)
    • État
    • Zip
    • Country
    Note InformationsTip: Vous pouvez déposer un élément sur Concat pour l'ajouter en haut de la liste, ou vous pouvez le déposer avant ou après un autre élément.
  4. Double-cliquez sur la fonction Concat afin de définir la chaîne de caractères à ajouter entre les éléments concaténés.
    Ce paramètre est vide par défaut. Si vous souhaitez séparer les différentes parties de l'adresse, par exemple par un espace, saisissez un espace dans le champ Join String.
  5. Glissez l'élément d'entrée PartNumber dans la sortie correspondante.
    Puisque la structure de sortie est déjà en cours d'itération sur l'élément d'entrée Address, cela crée un conflit.
  6. Dans la boîte de dialogue qui s'ouvre, sélectionnez Change the output map element looping (Modifier l'itération de l'élément de map de sortie) puis cliquez sur OK.

    Lorsque vous sélectionnez cette option, la structure de sortie itère sur l'élément Item. Un contexte est automatiquement ajouté à la boucle item de sortie.

    En conséquence, si un élément Address contient plusieurs éléments Item, la sortie va contenir une ligne pour chaque élément Item.

  7. Glissez les éléments d'entrée ProductName, Quantity et USPrice sur les éléments de sortie correspondants.

Results

Votre mapping est configuré. Si vous avez un document échantillon, vous pouvez cliquer sur Test Run pour voir le résultat. Dans cet exemple, il ressemble à ceci :
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

Agréger des boucles imbriquées dans une boucle simple

Convertissez une structure XML avec boucles imbriquées en une structure CSV plate en agrégeant les boucles imbriquées.

Before you begin

Vous avez créé une map et ajouté une structure d'entrée et de sortie.

About this task

Cet exemple utilise la même structure d'entrée que dans Combiner des boucles imbriquées en une boucle simple. L'objectif de la transformation est d'obtenir un fichier CSV avec une ligne pour chaque élément Address contenant des informations concernant la livraison et les produits.

La structure de sortie contient de multiples éléments PartNumber et ProductName, afin que chaque ligne puisse contenir tous les produits à livrer à une adresse spécifique. Ils sont définis comme suit :
AddressesShipping
                  Address (0:*)
                  Name
                  Street
                  City
                  State
                  Zip
                  Country
                  DeliveryNotes
                  PartNumber_1
                  ProductName_1
                  PartNumber_2
                  ProductName_2
                  PartNumber_3
                  ProductName_3

Procedure

  1. Glissez les éléments d'entrée suivants sur les éléments de sortie correspondants :
    • Name (Nom)
    • Street
    • City (ville)
    • État
    • Zip
    • Country
    • DeliveryNotes
  2. Glissez l'élément d'entrée PartNumber sur l'élément de sortie PartNumber_1.
    Puisque la structure de sortie est déjà en cours d'itération sur l'élément d'entrée Address, cela crée un conflit.
  3. Dans la boîte de dialogue qui s'ouvre, sélectionnez Generate AgConcat value expression et cliquez sur OK.
    Avec cette option, toutes les valeurs des éléments PartNumber contenus dans chaque élément Address sont agrégées dans un champ unique, à l'aide d'une fonction AgConcat. Si vous souhaitez avoir une valeur unique par champ, vous devez utiliser un filtre.
  4. Glissez une fonction SingleIndex dans l'argument Filter, dans l'onglet Value de l'élément de sortie PartNumber_1.
    Pour obtenir la valeur du premier élément PartNumber, vous pouvez laisser la valeur par défaut pour l'index.
  5. Glissez l'élément d'entrée PartNumber dans les éléments de sortie PartNumber_2 et PartNumber_3, puis sélectionnez Generate AgConcat value expression dans les boîtes de dialogue qui s'ouvrent et cliquez sur OK.
    Les filtres sont automatiquement configurés, selon l'expression définie dans PartNumber_1.
  6. Répétez les étapes précédentes pour mapper l'élément d'entrée ProductName aux éléments de sortie ProductName_1, ProductName_2 and ProductName_3.

    Example

Results

Votre mapping est configuré. Si vous avez un document échantillon, vous pouvez cliquer sur Test Run pour voir le résultat. Dans cet exemple, il ressemble à ceci :
Name,Street,City,State,Zip,Country,DeliveryNotes,PartNumber_1,ProductName_1,PartNumber_2,ProductName_2,PartNumber_3,ProductName_3
               Deandre King,4894  Winding Way,Southfield,MI,48075,USA,Please leave packages in shed by driveway.,872-AA,Lawnmower,926-AA,Baby Monitor,,
               Burl Clark,3807 Pointe Lane,Fort Lauderdale,FL,33308,USA,,356-KX,Gas canister,,,,

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – faites-le-nous savoir.