IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement de jobs Discussion :

Boucle écriture dans un fichier XML


Sujet :

Développement de jobs

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 39
    Par défaut Boucle écriture dans un fichier XML
    Bonjour,

    Un fichier XML comporte les balises suivantes pour plusieurs milliers d'entreprises. Attention deux entreprises peuvent avoir le même nom (responsable de magasin différent et/ou ville différente)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <nom>entreprise</nom>
    <ville>paris</ville>
    <responsable>DURAND</responsable>
    <idclient></idclient>
    Je souhaiterais ajouter un numéro de client (Id1 à Idn) pour chacune des entreprises.

    Les difficultés majeures sont :
    - la présence d'une même entreprise plusieurs fois dans le fichier XML,
    - le fait que le nom de l'entreprise ne soit unique. Est unique la combinaison des données des trois balises suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <nom>entreprise</nom>
    <ville>paris</ville>
    <responsable>DURAND</responsable>
    Il faudrait effectuer une boucle réalisant les étapes suivantes:
    - rechercher les résultats des trois balises dans le fichier ("Fct Recherche")
    - remplir la balise <idclient> par id1

    Je souhaiterais effectuer cette boucle sur Talend (niveau débutant +++) Pourriez-vous me guider ?

    Merci d'avance.

  2. #2
    Membre expérimenté Avatar de kayim
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2011
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2011
    Messages : 134
    Par défaut
    Hello,

    ton job pourrait ressembler à

    tFileInputXML ----tUniqRow----tMap-----tFileOutputXML

    Pour ton tFileInputXML, le plus simple sera de l'importer dans ton referentiel en tant que metadata, ça t’évitera de construire toi-même le schéma.
    Choisir la balise parent de "nom", "ville", et "responsable" dans ton "Expression de boucle Xpath", puis choisir les 3 champs dans "Champs à extraire" par glisser deposer.
    Le tUniqRow te permettra ensuite de ne prendre qu'une societé répondant à ton critère d'unicité. Dans le tMap, tu pourrait construire une séquence de type Numeric.sequence("seq",1,1) que tu mappera avec ta colonne IdClient de ton tFileOutputXML.

    Bon courage

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 39
    Par défaut
    Merci Kayim pour le tuto.
    J'espère effectuer les essais très bientôt !

    Belle journée à toi.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 39
    Par défaut
    Bonjour Kayim,

    J'ai procédé aux premiers essais.
    Deux points sont à retenir :
    1- l'ID client s'incrémente pour tous les enregistrements. En effet les doublons ne disposent pas d'un numéro unique (erreur dans la configuration du tUniqRow ?)
    2- En sortie, j'obtiens un fichier XML avec toutes les balises vides sauf les quatre concernées par le traitement. J'ai tenté d'utiliser le module tAdvancedFileOutPutXML sans plus de réussite.

    Voici quelques copies d'écrans.

    D'avance, merci.
    Images attachées Images attachées    

  5. #5
    Membre expérimenté Avatar de kayim
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2011
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2011
    Messages : 134
    Par défaut
    hello,
    Voici quelque captures. (je sais pas si c'est vraiment le resultat attendu )
    bon courage
    Images attachées Images attachées      

  6. #6
    Membre expérimenté Avatar de kayim
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2011
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2011
    Messages : 134
    Par défaut
    2 autres captures
    Images attachées Images attachées   

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 39
    Par défaut
    Merci Kayim pour votre aide.
    Je pense avoir oublié un élément important. C'est que le fichier XML dispose d'autres balises en plus de celles de l'employeur.
    L'objectif est de consigner l'id_client et de garder intact toutes les autres balises (plus d'une dizaine).

    En PJ vous trouverez une fraction du fichier en entrée et ce que je souhaiterais obtenir en sortie.

    D'avance, merci.

    HR
    Fichiers attachés Fichiers attachés

  8. #8
    Membre expérimenté Avatar de kayim
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2011
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2011
    Messages : 134
    Par défaut
    Hello,

    ça doit pas causer de gros changements.
    Il suffira de bien définir tes expressions Xpath dans l'import du IN.xml dans tes metadatas (de manière à pouvoir traiter l’unicité ou la trinité (sans connotation réligieuse) de entreprise/ville/responsable) puis créer un autre en tant que sortie xml et bien faire le mapping.
    Pour construire l'output, tu pourrais aussi utiliser un tXMLMap ça devrait beaucoup aider
    Bon courage

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 39
    Par défaut
    Merci Kayim pour ces précisions !
    J'espère procéder aux essais prochainement.

    Bonne fin de semaine.

Discussions similaires

  1. JEdit - Boucle écriture dans un fichier XML
    Par vr_brandon dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 10/04/2013, 09h57
  2. Boucle d'écriture dans un fichier xml
    Par vr_brandon dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 20/03/2013, 15h35
  3. [SimpleXML] Écriture dans un fichier XML
    Par Nounet12 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 24/06/2008, 11h43
  4. Problème d'écriture dans un fichier xml
    Par vanoou dans le forum C++Builder
    Réponses: 1
    Dernier message: 13/07/2005, 02h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo