sept 23 2009
[PDI] Récupérer la valeur du noeud XML que l’on parcourt
Dans le genre Je bloque sur des trucs trop cons, voilà l’exemple du jour. Comment extraire les données du fichier XML suivant avec Pentaho Data Integration et le composant Extraction de données XML ?
<?xml version="1.0" encoding="UTF-8"?> <response> <resData> <list> <name>name1</name> <name>name2</name> <name>name3</name> <name>name4</name> <name>name5</name> <name>name6</name> <name>name7</name> <name>name8</name> <name>name9</name> <name>name10</name> </list> </resData> </response>
La première chose que j’ai tenté fût de parcourir le noeud /response/resData/list. Après récupération automatique des champs, je vois bien :
- Nom : name
- XPath à parcourir : name
- Elément : Node
C’est parfait ! Testons ça en prévisualisant. Le résultat est simple : une seule ligne est affichée (valeur name1). C’est pas bon.
Il faut donc parcourir /response/resData/list/name. Oui mais quand on récupère les champs, il ne nous ajoute rien. Par contre lorsque l’on prévisualise, on a bien les 10 lignes qui apparaissent mais vide. Il faut donc créer manuellement le champs nécessaire. Autant le nom c’est plutôt simple, autant le reste c’est un peu plus subtil. Dans XPath à parcourir, il suffit de mettre un « . » (point seulement) et dans Elément il faut choisir Node. Et là magie (ou pas), on a bien nos dix noms qui apparaissent.
