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

Créer des boucles récursives depuis un fichier plat

Utilisez une fonction FlatToHierarchyLoop pour créer des boucles récursives basées sur les niveaux définis dans un fichier plat.

Avant de commencer

Vous avez créé une map avec une structure d'entrée et de sortie. Vous pouvez utiliser les échantillons fournis ci-dessous.

Pourquoi et quand exécuter cette tâche

Dans cet exemple, vous avez un fichier CSV décrivant une table de contenus avec des tuiles, des numéros de page et des numéros correspondant au niveau de chaque élément. Vous souhaitez créer un fichier XML dans lequel les éléments sont imbriqués selon leur niveau. Vous pouvez utiliser l'échantillon suivant en entrée :
title,page,level
Introduction,3,1
Part 1,10,1
Chapter 1,10,2
Section 1,10,3
Section 2,31,3
Section 3,56,3
Chapter 2,80,2
Section 1,80,3
Section 2,102,3
Part 2,125,1
Chapter 1,125,2
Chapter 2,160,2
Section 1,160,3
Section 2,185,3
Conclusion,213,1
Vous pouvez utiliser l'échantillon XML suivant pour créer votre structure de sortie :
<contents>
	<entry>
		<title/>
		<page/>
	</entry>
	<entry>
		<title/>
		<page/>
	</entry>
</contents>

Procédure

  1. Cliquez sur l'élément de sortie entry et glissez-déposez une fonction FlatToHierarchyLoop dans son onglet Loop.
  2. Glissez-déposez l'élément d'entrée row sur l'argument Input Map Element.
  3. Glissez-déposez l'élément d'entrée level sur l'élément Level Number.
    La fonction utilise le numéro dans la colonne leveldu fichier d'entrée pour déterminer comment structurer la boucle récursive dans la sortie.
  4. Glissez-déposez l'élément d'entrée row sur l'élément de sortie entry pour mapper automatiquement le titre title et la page.

Résultats

Votre map est configurée et doit ressembler à ceci :
Vous pouvez utiliser la fonctionnalité Test Run pour voir le résultat. Dans cet exemple, la sortie suivante est retournée :
<contents>
  <entry>
    <title>Introduction</title>
    <page>3</page>
  </entry>
  <entry>
    <title>Part 1</title>
    <page>10</page>
    <entry>
      <title>Chapter 1</title>
      <page>10</page>
      <entry>
        <title>Section 1</title>
        <page>10</page>
      </entry>
      <entry>
        <title>Section 2</title>
        <page>31</page>
      </entry>
      <entry>
        <title>Section 3</title>
        <page>56</page>
      </entry>
    </entry>
    <entry>
      <title>Chapter 2</title>
      <page>80</page>
      <entry>
        <title>Section 1</title>
        <page>80</page>
      </entry>
      <entry>
        <title>Section 2</title>
        <page>102</page>
      </entry>
    </entry>
  </entry>
  <entry>
    <title>Part 2</title>
    <page>125</page>
    <entry>
      <title>Chapter 1</title>
      <page>125</page>
    </entry>
    <entry>
      <title>Chapter 2</title>
      <page>160</page>
      <entry>
        <title>Section 1</title>
        <page>160</page>
      </entry>
      <entry>
        <title>Section 2</title>
        <page>185</page>
      </entry>
    </entry>
  </entry>
  <entry>
    <title>Conclusion</title>
    <page>213</page>
  </entry>
</contents>

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 – dites-nous comment nous améliorer !