Boucler plusieurs balises dans le composant tXMLMAP avec Talend

Cherchez-vous Comment faire une boucle dans des fichiers XML? Alors oui, vous êtes au bon endroit pour obtenir plus d'informations sur la façon de récupérer des données à partir de fichiers XML avec plusieurs balises à traiter / transformer en utilisant l'un des composants avancés de Talend studio appelé tXMLMap Component.
Avant d'entrer dans le concept réel de ce blog, nous avons besoin de connaissances de base sur le tXMLMap et ses utilisations. Contrairement à tMap, nous ne pourrons pas donner le schéma à la source d'entrée dans le tXMLMap, afin de donner un schéma à de tels types de source, nous avons un merveilleux type de données appelé Document Type
Le tXMLMap est principalement utilisé pour transformer et acheminer les données de sources uniques ou multiples vers des destinations uniques ou multiples. Parfois, il est également utilisé pour le processus de demande de réponse ESB.
Dans ce blog, nous allons voir comment nous pouvons transformer / traiter le fichier XML avec plusieurs balises et comment configurer le tXMLMap sans le schéma réel du fichier et aussi différents types de techniques de bouclage.
Il existe principalement deux manières d'écrire du contenu dans des fichiers XML. En fonction de la manière d'écrire le contenu dans le fichier, nous avons deux types de techniques de bouclage. Ce sont:
1. Élément à boucle unique
2. Éléments de boucle multiple.
Ici, dans ce blog, nous allons apprendre comment implémenter la boucle multiple dans le composant tXMLMap.
Éléments de boucle multiple:
La méthode de boucle simple fonctionne bien si nous n'avons que de simples données xml mais que se passe-t-il si nous avons des données XML complexes comme avoir plusieurs informations sur les employés au sein de la même entreprise comme ci-dessous, alors nous avons besoin d'une méthode de boucle multiple.
Exemple de fichier d'entrée:
Maintenant, je dois charger ces données dans Talend Studio afin de poursuivre le processus. Pour cela, j'ai inséré le composant tFileInputXML avec le schéma comme type de document Nom de la colonne en tant que société.
Schéma XML d'entrée:
Et les paramètres du composant incluent la requête de chemin de boucle, l'activation des nœuds et la requête XPath .
Si vous avez besoin de ne considérer que des balises particulières du xml d'entrée, en fonction du chemin de balise de l'élément racine, vous devez inclure dans la requête de chemin de boucle.
Si vous voulez inclure le XML complet, vous devez écrire '/' qui signifie répertoire racine. Et vous devez activer l'option GET NODES afin d'obtenir les données des nœuds enfants. Après configuration en fonction de vos besoins, cela ressemblera à ceci:
Configuration d'entrée du tFileInputXML:
Une fois le tFileInputXML configuré avec succès, vous devez insérer le composant tXMLMap et connecter ces deux composants en utilisant la ligne principale connexion comme ci-dessous
Voici maintenant l'étape actuelle et principale qui consiste à configurer le composant tXMLMap. Maintenant, double-cliquez sur le composant, vous obtiendrez un nouvel éditeur comme suit.
Initial tMap Editor:
Par défaut, l'élément loop est sur la colonne racine, mais nous n'avons pas n'importe quelle colonne en tant que racine dans le fichier d'entrée. Donc, je change le nom de la racine en XMLINFO qui est la racine du fichier d'entrée. Pour cela, cliquez avec le bouton droit sur la racine et cliquez sur l'option de renommer.
Création d'un sous-élément:
Une fois qu'il est renommé, vous devez ajouter les autres balises ici en cliquant sur Créer un sous-élément après Cliquez avec le bouton droit de la souris et entrez le nom approprié basé sur le fichier d'entrée.
Comme cela, vous devez créer la structure XML complète dans cet éditeur en utilisant cette option de création de sous-élément. Comme ça, vous devez créer toutes les balises dans l'éditeur xmlmap et une fois que vous avez fait cette étape, vous devez copier les colonnes requises dans la table de sortie de droite. Ensuite, l'éditeur ressemblera à ceci:
Traitement initial du tXMLMap:
Maintenant, si nous exécutons le travail avec l'élément de boucle sur COMPANY, alors nous avons gagné n'obtiens pas les informations complètes que nous avons dans le fichier d'entrée. Si nous exécutons la sortie sera comme suit
Sortie initiale:
Mais nous avons un total de 2 informations sur les employés à la fois dans Infosys et Perficient, mais ici nous n'en obtenons qu'une. Pour les obtenir, nous devons changer les éléments de la boucle et autoriser deux éléments de la boucle. Pour cela, nous devons faire des balises COMPANYDETAILS et EMP à la fois comme des éléments de boucle car nous avons plusieurs informations à l'intérieur de l'EMP afin d'obtenir tous les enregistrements, nous devons créer cet élément de boucle.
Ici, dans cet exemple, COMPANYDETAILS n'est pas obligatoire de conserver comme élément de boucle mais si nous avons plusieurs balises dans celui-ci également, il est obligatoire de le conserver en tant qu'élément de boucle. Après avoir fait ces deux éléments de boucle, cela ressemble à
Balises de boucle modifiées sur les éléments parents et enfants:
Maintenant, côté gauche, il est configuré avec succès, mais si vous regardez dans le schéma de droite, vous trouverez un message d'erreur comme ci-dessous
Cliquez maintenant sur l'icône de messagerie, là si vous cliquez sur l'icône plus, vous obtiendrez le nombre de séquences égal au nombre de éléments de boucle que vous avez inclus dans le travail. Comme nous avons ici deux éléments de boucle, nous avons deux séquences, et vous devez spécifier quelle boucle vous voulez exécuter en premier.
Ici, plusieurs informations sont présentes dans une seule balise qui est Employee. Nous devons donc sélectionner cette séquence dans la sortie. Si vous avez d'autres balises internes et que vous les avez créées en tant qu'éléments de boucle et que vous souhaitez collecter des informations uniquement liées à cette balise, vous devez inclure cette séquence seule.
Configuration de l'ordre de séquence dans la boîte de message:
Maintenant, si vous cliquez sur cette deuxième séquence dans l'image ci-dessus, le symbole d'erreur sur l'icône de messagerie disparaît. Vous êtes maintenant prêt à exécuter à nouveau le travail. La sortie finale ressemble à
Sortie finale ce que nous attendons:
Cette sortie contient toutes les informations sur les employés que nous avons dans le fichier d'entrée initial avec plusieurs informations sur les employés.
Enfin, ceci est la façon dont nous devons récupérer les données des fichiers XML avec les balises xml complexes et plusieurs balises internes. , mais nous pouvons créer plusieurs éléments enfants comme éléments de boucle, car les deux exemples sont clairement expliqués ci-dessus.
Source link