2016-02-29 79 views
1

我一直在pentaho Kettle中使用STAX解析器很長時間。但突然間我發現了一個奇怪的情況。此前是具有預先定義的XML文件的級別一樣:Pentaho Kettle動態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解析器(A/TRADE/TRADE/TRADE for level three等)中提到了Xpath。

預期輸出:

在第一種情況 - 兩個條目(行)在貿易表一個父貿易等兒童貿易。 第二種情況 - Trade Table中的四個條目(行) - 建立父子關係。

如何動態地做到這一點不知道交易的(深度)

數不過現在文件可以有貿易(分1和最大值15)的任何水平。我對如何在pentaho水壺中使用STAX解析器動態解析TRADE文件感到困惑。

任何指導將非常有幫助。

問候, 維卡斯

+0

什麼是預期的輸出? – bolav

+0

@bolav - 我需要在Trade Table中解析。從上面可以看出,在第一種情況下,應該有兩個(行)條目 - 一個用於父代,另一個用於子代(使用xml_element_id和parent_xml_element_id建立父子關係),而在第二種情況下應該有四個(行)父母子女關係)在貿易表。這種解析應該在事先不知道交易數量的情況下進行動態分析。 –

+0

請爲您的兩個示例添加行的預期佈局,以便我能夠完全理解您的問題。一個級別可以有幾個交易? – bolav

回答

1

有了這個轉型:

Screenshot of transformation

Filter rows

Screenshot of Filter rows

Row denormaliser

Screenshot of Row denormaliser

提供了以下的輸出:

Screenshot of output

+0

非常感謝。這對我有用。現在我可以繼續進行其他更改。乾杯!! –