我正在尝试使用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.但它不起作用...
答案 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更新子表的值。