# Restructurer des données produit à l'aide de différents éléments répétables

Ce scénario utilise un Job à quatre composants pour restructurer les données produit fournies par un fichier XML source, *ProductsIn.xml* à l'aide de différents éléments répétables (loop element).

Pour plus de technologies supportées par Talend, consultez [Composants Talend](https://help.qlik.com/talend/r/fr-FR/7.3/components/txmlmap).

![](https://help.qlik.com/talend/fr-FR/components/7.3/Resources/images/txmlmap-multiloop3.png)

Les composants utilisés sont :

* un tFileInputXML : lit les données produit source et les passe au tXMLMap.

* un tXMLMap : transforme le flux d'entrée pour lui donner la structure simplifiée attendue.

* un tLogRow : affiche les résultats d'exécution dans la console.

* un tFileOutputXML : écrit un flux de sortie dans un fichier XML.

Le contenu du fichier XML source *ProductsIn.xml* se présente comme suit :

```
<?xml version="1.0" encoding="ISO-8859-15"?>
<products category="1" name="laptop">

	<!-- Summary -->
	<summary>
		<company>DELL, HP</company>
		<sales unit="Dollars">12345678910.12345</sales>
		<model>business</model>
	</summary>

	<!-- Loop1 manufacture -->
	<manufacture id="manu_1" date="2012-10-30">
		<name>DELL</name>
	</manufacture>
	<manufacture id="manu_2" date="2012-10-28">
		<name>HP</name>
	</manufacture>

	<!-- Loop2 types -->
	<types model="business1">
		<type>DELL123</type>
		<manufacture_id>manu_1</manufacture_id>
	</types>
	<types model="business2">
		<type>HP123</type>
		<manufacture_id>manu_2</manufacture_id>
	</types>

	<!-- Loop3 sale -->
	<sales>
		<sale unit="Dollars" type="DELL123">
			<quater>1</quater>
			<income>12345</income>
		</sale>
		<sale unit="Dollars" type="HP123">
			<quater>1</quater>
			<income>12345.123</income>
		</sale>
	</sales>
</products>
```

L'objectif de ce scénario est la restructuration de données produit est de simplifier la présentation des informations produit afin de réutiliser le fichier pour la manufacture. Les données attendues se présentent comme suit. L'élément racine est modifié à *manufacturers*, les informations relatives aux ventes sont consolidées dans l'élément *sale* et l'élément *manufacturer* est réduit à un niveau.

```
<?xml version="1.0" encoding="ISO-8859-15"?>
<manufacturers category="1" name="laptop">
  <sales unit="Dollars">
    <sale sales_type="DELL123">12345.0</sale>
    <sale sales_type="HP123">12345.123</sale>
  </sales>
  <manufacturer id="manu_1" date="03-04-0036" name="DELL"/>
  <manufacturer id="manu_2" date="04-04-0034" name="HP"/>
  <types>
    <type>DELL123</type>
    <manufacturer_id>manu_1</manufacturer_id>
  </types>
  <types>
    <type>DELL123</type>
    <manufacturer_id>manu_2</manufacturer_id>
  </types>
  <types>
    <type>HP123</type>
    <manufacturer_id>manu_1</manufacturer_id>
  </types>
  <types>
    <type>HP123</type>
    <manufacturer_id>manu_2</manufacturer_id>
  </types>
</manufacturers>
```

### Dans cette section

* [Ajouter et relier les composants](https://help.qlik.com/talend/fr-FR/components/7.3/txmlmap/txmlmap-tfileinputxml-tlogrow-tfileoutputxml-adding-and-linking-components-standard-component-create)
* [Configurer le flux d'entrée](https://help.qlik.com/talend/fr-FR/components/7.3/txmlmap/txmlmap-tfileinputxml-tlogrow-tfileoutputxml-configuring-input-flow-standard-component)
* [Configurer le tXMLMap avec différentes boucles](https://help.qlik.com/talend/fr-FR/components/7.3/txmlmap/txmlmap-tfileinputxml-tlogrow-tfileoutputxml-configuring-txmlmap-with-multiple-loops-standard-component)
* [Configurer le flux de sortie](https://help.qlik.com/talend/fr-FR/components/7.3/txmlmap/txmlmap-tfileinputxml-tlogrow-tfileoutputxml-configuring-output-flow-standard-component)
* [Exécuter le Job](https://help.qlik.com/talend/fr-FR/components/7.3/txmlmap/txmlmap-tfileinputxml-tlogrow-tfileoutputxml-saving-and-executing-job-standard-component-press)

**Concepts associés**

[tXMLMap](https://help.qlik.com/talend/fr-FR/components/7.3/txmlmap/txmlmap "Ce composant transforme et route des données à partir d'une ou plusieurs source(s) de données vers une ou plusieurs destination(s).")

**Information associée**

[tFileInputXML](https://help.qlik.com/talend/r/fr-FR/7.3/components/xml-connectors/tfileinputxml)

[tLogRow](https://help.qlik.com/talend/r/fr-FR/7.3/components/logs-and-errors/tlogrow)

[tFileOutputXML](https://help.qlik.com/talend/r/fr-FR/7.3/components/xml-connectors/tfileoutputxml)