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 :
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 : 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>
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 !
Partager