在Kettle / Spoon中同时读取属性和节点

时间:2010-01-06 14:51:47

标签: xml kettle

我正在使用水壶并尝试从xml文档中加载属性和节点值。

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

如果我将循环XPath设置为Colors我将只获得一行,但它将同时读取代码和值。
例如:

Code  | Color
123   | blue

但是如果我将XPath设置为Color我将获得3行,但它不会读取每个项目的值。
例如:

Code 
123
234
456

如何在一次传递中读取所有元素以及属性和节点值?

感谢。

1 个答案:

答案 0 :(得分:4)

使用“从XML获取数据”步骤(输入类别) 将Loop XPath设置为/Colors/Color 在字段选项卡中,点击“获取字段”。这将为

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

现在,对于元素的值,在网格中手动添加一个新行,如下所示:

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

换句话说,使用XPath标准text()函数从上下文节点中提取文本内容。

与往常一样,使用预览行检查结果。我明白了:

code    value
123 blue
234 black
456 green