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 xml pour extraire dans un csv sur Talend


Sujet :

Développement de jobs

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Boucle xml pour extraire dans un csv sur Talend
    Bonjour, je cherche à créer un job extrayant des informations d'une page web à partir du thttprequest (jusque là ça fonctionne), les données extraient sont au format xml et ont le schéma suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    <xml>
    	<item>
    		<name>'Lib_produit'</name>
    		<sku>'Code_produit'</sku>
    		<competitors>
    			<competitor>
    				<shop>'Concurrent'</shop>
    				<url>'URL_concurrent'</url>
    				<price>'Prix'</price>
    			</competitor>
     
    			<competitor>
    				<shop>'Concurrent'</shop>
    				<url>'URL_concurrent'</url>
    				<price>'Prix'</price>
    			</competitor>
    		</competitors>
     
    		<marketplaces>
    			<marketplace>
    				<marketplace>'Concurrent'</marketplace>
    				<shop>'Vendeur'</shop>
    				<url>'URL_concurrent'</url>
    				<price>'prix'</price>
    				<shippingcost>'shipping'</shippingcost>
    			</marketplace>
     
    			<marketplace>
    				<marketplace>'Concurrent'</marketplace>
    				<shop>'Vendeur'</shop>
    				<url>'URL_concurrent'</url>
    				<price>'prix'</price>
    				<shippingcost>'shipping'</shippingcost>
    			</marketplace>
    		</marketplaces>
    	</item>
    </xml>
    Mon problème étant qu'ensuite j'utilise le composant tExtractXMLfield (ma boucle XPath étant "xml/item") Je n'arrive pas à obtenir pour le schéma xml ci-dessus un fichier csv de ce modèle :

    Code_produit;Lib_produit;Concurrent;Vendeur;Prix;shipping;URL_concurrent;Market_place;

    Sachant que : - Le code produit correspond toujours à la balise <sku>, il n'est pas en doublon mais doit être précisé à chaque ligne dans le csv.
    - Le lib produit correspond toujours à la balise <name>, il n'est pas en doublon mais doit être précisé à chaque ligne dans le csv.
    - Le concurrent vient soit : ".//competitor/shop" ou ".//marketplace/marketplace" sachant qu'il peut y avoir plusieurs <competitor>, donc plusieurs <shop> dans <competitor>, et il y a une ligne csv par <competitor> ainsi qu'une ligne csv par <marketplace>.
    -Le Vendeur, si le 'Concurrent' vient de ".//competitor/shop", 'vendeur' sera le même, sinon 'vendeur' sera ".//marketplace/shop"
    -Le Prix, si le 'Concurrent' vient de ".//competitor/shop", 'Prix' sera ".//competitor/price" sinon 'prix' sera ".//marketplace/price"
    -Le coût d'expédition, si le 'Concurrent' vient de ".//competitor/shop", 'shipping' sera '0', sinon 'shipping' sera ".//marketplace/shippingcost"
    -L'URL, si le 'Concurrent' vient de ".//competitor/shop", 'URL_concurrent' sera ".//competitor/url", sinon ".//marketplace/url"
    -Le Marketplace est un valeur booléenne (vrai/faux, 1/0, Oui/Non... peu m'importe) il est égal à 'vrai' OU '1' OU 'Oui', si 'Concurrent vient de ".//marketplace/marketplace", sinon il vaut 'faux' OU '0' OU 'Non'.

    (Sachant que je ne veux perdre aucun <competitor> ou <marketplace> en route)

    Tout ceci est très clair pour moi, je sais ce que je veux obtenir et à quelles conditions, mais je n'ai aucune idée de comment exploiter correctement Talend (malgré mes tentatives) pour y parvenir, si quelqu'un peut m'éclairer, ne serait-ce qu'un peu il est le bienvenu. Merci d'avance !

  2. #2
    Membre expérimenté Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 795
    Points : 1 685
    Points
    1 685
    Par défaut
    Salut,

    Dans ton problème on distingue 3 dimensions (Product,Competitor,Marketplace).
    Et ta solution ne prend en compte qu'une seule dimension (Product).

    Afin de prendre ne compte les deux autres dimensions il faut que tu utilises 3 tExtractXMLFieds.

    Le premier pour les produits, il doit extraire :
    • name : String
    • sku : String
    • competitors : String ou Document (Option : Extraire les noeuds XML)
    • Marketplace : String : Document (Option : Extraire les noeuds XML)


    Dans le second, tu extrais tes données extraites au compétiteur avec les competitors extraites précédement.
    Dans le 3e même chose avec la marketplace

    Et là tu auras fusionnés tes 3 dimensions et tu pourras créer ton CSV
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discution est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

  3. #3
    Membre expérimenté Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 795
    Points : 1 685
    Points
    1 685
    Par défaut
    Je t'es mis en pièce jointe la solution pour fusionner les 3 dimensions. C'est un zip que tu peux importer dans Talend.

    Nom : problemebouclexmlextrairecsv.png
Affichages : 698
Taille : 7,9 Ko
    Fichiers attachés Fichiers attachés
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discution est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci bien pour ta réponse. Mais au final j'aurais bien ma ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Code_produit;Lib_produit;Concurrent;Vendeur;Prix;shipping;URL_concurrent;Market_place;
    ? parceque je ne voulais pas différencier le <marketplace> et le <competitor> à la fin dans le csv.

  5. #5
    Membre expérimenté Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 795
    Points : 1 685
    Points
    1 685
    Par défaut
    De rien. J'ai pas fait gaffe à l'ordre. Je t'ai bien mâché le travail. On est pas sur http://www.faismesdevoirs.org/ .
    Complètes et testes ma proposition, essaye de la comprendre et ensuite poses-moi des questions si il y quelque chose que tu ne comprends pas, ou si il y a quelque-chose que j'ai mal fait.
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discution est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    C'est un vrai site en plus ?
    Non j'ai clairement vu que tu m'avais donné plus qu'une piste mais un GPS. Ma question précédente était simplement une confirmation, parceque (pour moi, de mon niveau basique sur Talend) j'avais l'impression que ta solution ne m'offrait pas le bon point d'arrivée. Si je me trompe (tout à fait probable), je te remercie doublement ! Je vais la tester je te ferai un retour.

  7. #7
    Membre expérimenté Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 795
    Points : 1 685
    Points
    1 685
    Par défaut
    Citation Envoyé par Petude Voir le message
    C'est un vrai site en plus ?
    Si le lien existerait pas ça serait moins marrant.

    Citation Envoyé par Petude Voir le message
    Non j'ai clairement vu que tu m'avais donné plus qu'une piste mais un GPS. Ma question précédente était simplement une confirmation, parceque (pour moi, de mon niveau basique sur Talend) j'avais l'impression que ta solution ne m'offrait pas le bon point d'arrivée. Si je me trompe (tout à fait probable), je te remercie doublement ! Je vais la tester je te ferai un retour.
    J'ai prix en compte ton niveau, j'ai pas fait les choses les plus faciles comme ajouté le CSV, et faire le mapping entre ma transformation et ton fichier, modifié l'url du WS...
    Si je t'ai ajouté la pièce jointe, c'est parce-que je considérai que tu n'avais pas l'expérience pour utiliser quelques subtilités auquel je penserai intuitivement.
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discution est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    J'ai testé ta solution mais n'y arrivant pas, je suis parvenu à une autre solution (ci dessous) :
    Nom : solutionfinale.png
Affichages : 692
Taille : 20,9 Ko

    Fonctionnant parfaitement comme voulu. Merci de ton aide tout de même !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/09/2013, 14h44
  2. Réponses: 2
    Dernier message: 23/03/2013, 00h42
  3. [XML] Récupérer XML pour insérer dans MySQL
    Par poloniax dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 12/11/2010, 15h50
  4. Parser logs apache pour extraire dans un CSV
    Par GTJuanpablo dans le forum Linux
    Réponses: 13
    Dernier message: 22/04/2009, 15h43
  5. [DOM XML] Parser un fichier XML pour insertion dans la base
    Par npirard dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 08/09/2008, 15h44

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