【问题标题】:How can i extract data from the XML using Pentaho when xml tag is repeating?当 xml 标签重复时,如何使用 Pentaho 从 XML 中提取数据?
【发布时间】:2018-03-15 12:50:59
【问题描述】:

我正在从 XML 中提取数据。因为我有两个具有不同值的重复标签。那么我怎样才能在不同的列中获取这些数据呢?

<table>
  <tr>
    <td>A</td>
    <td>B</td>
  </tr>
  <tr>
    <td>A1</td>
    <td>B2</td>
  </tr>
</table>

所以,我想在不同的列中获取这些值。我怎样才能做到这一点? 任何帮助将不胜感激。

【问题讨论】:

  • 抱歉代码是 B2
    A B
    A1

标签: xml pentaho pentaho-spoon pentaho-data-integration


【解决方案1】:

困难的部分是让kettle知道将结果放在哪一列。

  1. Content 面板中,将Loop XPath 定义为“/table/tr”。这将使 PDI 在每个标签上生成一行。
  2. Field 面板中,将名为“col1”的第一列定义为XPath 为“td[1]”,将名为“col2”的第二列定义为XPath“td[2]”。

如果列号是动态的,则需要元数据注入。

请注意,repeat 复选框不是重复字段,而是指示 Kettle 选择前一行的值,以防某行缺少字段。

【讨论】:

  • 感谢 AlainD,你真的拯救了我的一天,但是伙计,我面临另一个问题,我有以下 xml 格式。在那我想采用段落值,所以我该如何实现。我已经尝试了我在评论中提到的一种方法
  • &lt;tbody&gt; &lt;tr&gt; &lt;td&gt; &lt;paragraph styleCode="cellHeader"&gt;Overview:&lt;/paragraph&gt; &lt;paragraph&gt;Test&lt;/paragraph&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td ID="problem29name"&gt;Anemia&lt;/td&gt; &lt;td&gt;07/30/2015&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;
  • 你试过loop XPath = /tbody/tr/td 和field XPath = 段落[1],段落[2]。如果是,请使用 xml 和您想查看的内容打开一个新问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-06
  • 2011-12-14
  • 2015-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多