如何用pentaho读取xml中的重复标记?

时间:2017-07-04 15:53:54

标签: xml pentaho etl

我正在尝试使用pentaho加载和XML文件:

<?xml version="1.0" encoding="ISO-8859-1"?>
<scapplication>
<heading>
  <dispatchingcode>GML</dispatchingcode>
  <version>001</version>
  <dispatchingcompany>1232</dispatchingcompany>
</heading>
<F456>
  <reqcode>0019682125</reqcode>
  <comreferencenum>30104</comreferencenum>
  <responsedate>2017-06-29</responsedate>
</F456>
<F456>
  <reqcode>0019657723</reqcode>
  <comreferencenum>29676</comreferencenum>
  <responsedate>2017-06-29</responsedate>
</F456>
</scapplication>

我发现用pentaho加载它的主要问题是F456标签应该在加载中迭代。 这意味着我需要检测每个F456节点中的每个节点,因为稍后我将在表输出语句中的两个不同的行中加载它。

如何用pentaho在循环中重写两个标签? 我想如果两个标签都放在另一个标签内,那将很容易,但我没有这两个标签,所以我不知道如何加载GET DATA FROM XML Step

我尝试将F456作为一个字段在步骤中设置并将重复选项设置为Y.但它不起作用...

2 个答案:

答案 0 :(得分:1)

如果您使用 / scapplication / F456 作为XPath循环节点,您将获得每个F456节点一条记录,并使用“获取字段”将子元素作为字段。

假设每个[scapplication]只有一个[heading]部分,您可以手动输入其他字段以获取每个记录:

Name           |XPath                     |Element |Result type |Type
dispatchingcode|../heading/dispatchingcode|Node    |Value of    |String                 

答案 1 :(得分:0)

@Maik您可以使用stax解析器并使用switch和de-normalizer加载到表中。在stax解析器组件中预览数据。在预览中了解xml_element_id,xml_parent_element_id。如果您需要任何帮助,请告诉我。使用xml_element_id,xml_parent_element_id设计父表和子表。确定要保留在父级和子级中的列。然后使用xml_element_id,xml_parent_element_id更新子表的值。