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

发布于 2024-08-16 23:32:35 字数 493 浏览 9 评论 0原文

我正在使用 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

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

谢谢。

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:

Code 
123
234
456

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

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

乖乖 2024-08-23 23:32:35

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

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

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文