Pentaho Kettle

时间:2016-02-29 17:31:35

标签: xml pentaho stax pdi

我在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三级等等)。

预期产出:

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

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

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

任何指导都会非常有用。

此致 维卡斯

1 个答案:

答案 0 :(得分:1)

通过这次转型:

Screenshot of transformation

Filter rows

Screenshot of Filter rows

Row denormaliser

Screenshot of Row denormaliser

提供以下输出:

Screenshot of output