【问题标题】:Dynamic XML parsing in Pentaho KettlePentaho Kettle 中的动态 XML 解析
【发布时间】:2016-02-29 17:31:34
【问题描述】:

我在 pentaho Kettle 中使用 STAX 解析器已经很长时间了。但突然间,我遇到了一个奇怪的情况。早些时候,XML 文件具有预定义的级别,例如:

<A>
     <TRADE a="1" b="2">
        <TRADE a="3" b="4">
        </TRADE>
     </TRADE>
   </A>

 OR

   <A>
     <TRADE a="100" b="200">
       <TRADE a="1" b="2">
          <TRADE a="3" b="4">
             <TRADE a="5" b="6"> 
             </TRADE>
          </TRADE>
       </TRADE>
    </TRADE>
   </A>

如果文件包含两个交易级别,那么它是预先知道的,并且对于三个或四个级别(四个是最高级别)相同。 因此,STAX 解析器中提到了 Xpath(第三级的 A/TRADE/TRADE/TRADE 等)。

预期输出:

在第一种情况下 - 交易表中的两个条目(行)一个用于父交易,另一个用于子交易。 在第二种情况下 - 贸易表中的四个条目(行) - 建立父子关系。

如何在不知道交易次数(深度)的情况下动态执行此操作

但现在该文件可以具有任何级别的 TRADE(最小 1 最大 15)。我对如何在 pentaho 水壶中使用 STAX 解析器动态解析 TRADE 文件感到困惑。

任何指导都会非常有帮助。

问候, 维卡斯

【问题讨论】:

  • 预期输出是什么?
  • @bolav - 我需要在交易表中解析。如上所示,在第一种情况下应该有两个(行)条目 - 一个用于父项,另一个用于子项(使用 xml_element_id 和 parent_xml_element_id 建立父子关系)而在第二种情况下应该有四个(行)项(与父子关系)在贸易表中。这种解析应该在不事先知道交易数量的情况下动态发生。
  • 请为您的两个示例添加预期的行布局,以便我能够完全理解您的问题。一个级别可以有多笔交易吗?
  • @bolav - 是的,在任何级别都可以有多个交易。为了解释布局,让我试试。有贸易表。当第一级交易以其属性保存时,有 xml_parent_element_id 和 xml_element_id 并且如果保存了相应的子交易,则子交易的 xml_parent_element_id 与父交易的 xml_element_id 之间存在参照完整性。
  • 您是否正在寻找所有交易都包含:xml_element_id,xml_parent_element_id,a,b 的行?

标签: xml pentaho stax pdi


【解决方案1】:

有了这个转换:

Filter rows:

Row denormaliser:

给出以下输出:

【讨论】:

  • 非常感谢。这对我有用。现在我可以继续进行其他更改。干杯!!
猜你喜欢
  • 1970-01-01
  • 2015-06-27
  • 2019-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-26
相关资源
最近更新 更多