2010-01-06 21 views
1

J'utilise kettle et j'essaie de charger les valeurs d'attribut et de nœud à partir d'un document XML.Lecture simultanée des attributs et des nœuds dans Kettle/Spoon

<Colors> 
    <Color code="123">blue</Color> 
    <Color code="234">black</Color> 
    <Color code="456">green</Color> 
</Colors> 

Si je mets la boucle XPath aux couleurs je seulement obtenir une ligne mais il va lire à la fois le code et la valeur.
exemple:

Code | Color 
123 | blue 

Mais si je mets le XPath à la couleur que je vais obtenir 3 rangs, mais il ne lirai pas la valeur de chaque élément.
exemple:

Code 
123 
234 
456 

Comment puis-je lire tous les éléments et à la fois la valeur d'attribut et noeud en une seule passe?

Merci.

Répondre

4

Utilisez un "Obtenir des données à partir étape XML" (catégorie d'entrée) Régler la boucle XPath pour /Colors/Color Dans l'onglet champs, appuyez sur "Get Fields". Cela ajoutera une ligne pour

Name XPath Element Type Format Length Precision CurrencyDecimal Group Trim type Repeat 
code @code Node Integer       none N 

Maintenant, pour la valeur des éléments, ajouter une nouvelle ligne manuellement dans la grille comme ceci:

Name XPath Element Type Format Length Precision CurrencyDecimal Group Trim type Repeat 
value text() Node String       none N 

En d'autres termes, utilisez la fonction standard XPath text() pour extraire le contenu du texte du noeud de contexte.

Comme toujours, utilisez les lignes de prévisualisation pour vérifier le résultat. Je reçois ceci:

code value 
123 blue 
234 black 
456 green 
+0

Merci beaucoup! Ça m'a rendu fou. – Dilbert789

+0

NP, heureux que cela a aidé. Il y a quelques inconvénients avec la génération d'éléments XML avec à la fois des attributs et du contenu textuel. –