|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : février 2009 Messages : 18 ![]() |
Bonjour,
Je souhaite générer un fichier XML dont la structure attendue est la suivante : <catalog> <product> <field name="id">16</field> <field name="sku">n2610</field> <field name="category">8</field> <field name="category">12</field> <field name="category">18</field> </product> <product> <field name="id">17</field> <field name="sku">bb8100</field> <field name="category">1</field> <field name="category">18</field> </product> </catalog> La difficulté que je rencontre concerne les champs "category". Un produit peut être attaché à plusieurs catégories. Je ne vois pas comment générer plusieurs lignes avec le même non d'attribut, en plus, sans connaître leur nombre de catégories au préalable. En entrant, j'ai une table de jointure comportant 2 champs, l'identifiant produit et celui des catégories. Avez vous une idée pour me débloquer ? Merci d'avance. |
|
|
00
|
|
|
#2 |
|
Membre actif
![]() Consultant informatique Inscription : mars 2003 Messages : 130 ![]() |
Edit le schema de ton fichier xml
![]() pour tester j'ai creer une table avec ID_PRODUCT,ID_CATEGORY dedans je fais juste un select * de cet table le mapping : ![]() le job : ![]() j'obtiens ce fichier xml : ![]() C'est une solution que j'ai trouvé vite fait , il en existe surement des meilleurs |
|
|
10
|
|
|
#3 |
|
Invité de passage
![]() Inscription : février 2009 Messages : 18 ![]() |
Bonsoir kisskool,
Tout d'abord merci de m'avoir répondu. Je vois que tu as pris du temps pour me trouver une solution, c'est vraiment top ![]() J'ai testé ta solution, ça fonctionne parfaitement, tu m'as fait gagner beaucoup de temps Bonne soirée, merci!!! |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : février 2009 Messages : 18 ![]() |
Grâce à kisskool, j'ai avancé sur mon projet.
Comme je l'ai dit, cette solution fonctionne parfaitement. Néanmoins, dans ce flux je dois ajouter d'autres informations pour obternir la structure suivante : <catalog> <product> <field name="id">16</field> <field name="sku">n2610</field> <field name="category">8</field> <field name="category">12</field> <field name="category">18</field> <field name="feature_1">4 Go</field> <field name="feature_2">3 kg</field> <field name="feature_3">17 pouces</field> </product> <product> <field name="id">17</field> <field name="sku">bb8100</field> <field name="category">1</field> <field name="category">18</field> <field name="feature_1">2 Go</field> <field name="feature_2">3.2 kg</field> </product> </catalog> En simplifiant le schéma, j'ai une table contenant le nom de la caractéristique, sa valeur et l'identifiant du produit. Je dois donc procéder de la même manière que pour les catégories, mais dans le composant "AdvancedFileOutputXml", on ne peut faire qu'un regroupement et boucler dessus. Quelqu'un a t-il une idée à proposer ? Merci d'avance à tous. |
|
|
00
|
|
|
#5 |
|
Membre actif
![]() Consultant informatique Inscription : mars 2003 Messages : 130 ![]() |
En effet tu ne peux pas faire plusieurs loop sur talend,
j'ai une solution pour ton problème : Tous tes input doivent être de la forme suivante : ID_PRODUCT, field, type_field tu relie tes input a un tUnite Ensuite un tMap ou tu les relie au mapping de ton fichier xml Pour le fichier xml on garde le meme schéma sauf que cet fois tu coche la case Ecrire les données a la fin du fichier sources xml Par contre l'inconvénient c que tu n'écrases plus le fichier il te faudra donc le supprimer avant tout cela avec tFileDelete (tu peux faire une copie avant si tu dois garder un historique) Je te joins la doc du job que j'ai fais pour tester . |
|
|
10
|
|
|
#6 |
|
Invité de passage
![]() Inscription : février 2009 Messages : 18 ![]() |
Encore merci pour ton aide.
![]() Je comprends le principe de ta solution. Je vais tester et te faire un retour dès que possible. |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : février 2009 Messages : 18 ![]() |
kisskool45,
J'ai réussi à mettre ta solution en oeuvre. J'ai même réussi à le faire sans utiliser le tFileDelete. Par contre, j'ai dû mettre le composant de tri pour ordonner la liste par "id_product" à la sortie du tUnit. Cette solution me convient, mais je suis obligé d'avoir une entrée pour chaque champ, sur le composant tUnit. Comme j'en ai beaucoup, ça risque de ne plus être très lisible à terme. N'y a t-il pas une solution pour convertir une liste de plusieurs champs en plusieurs ligne sous la forme "id_product, field, type_field" ? |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com