【发布时间】: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的行?