开发者

Reading both attributes and nodes at the same time in Kettle / Spoon

开发者 https://www.devze.com 2022-12-16 02:05 出处:网络
I\'m using kettle and trying to load both the attribute and node values from an xml document. <Colors>

I'm using kettle and trying to load both the attribute and node values from an xml document.

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

If I set the loop XPath to Colors I will only get one row but it will read both the code and the value.

example:

Code  | Color
123   | blue

But if I set the XPath to the Color I will get 3 rows, but it will not read the value for each item.

example:

开发者_如何学CCode 
123
234
456

How do I read all elements and both the attribute and node value in one pass?

Thanks.


Use a "Get Data From XML step" (input category) Set the Loop XPath to /Colors/Color In the fields tab, hit "Get Fields". This will add a row for

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

Now, for the value of the elements, add a new row manually in the grid like this:

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

In other words, use the XPath standard text() function to extract the text content from the context node.

As always, use Preview rows to check the result. I get this:

code    value
123 blue
234 black
456 green
0

精彩评论

暂无评论...
验证码 换一张
取 消