我有一个需求,我必须从IFS中获取一个XML文件,并将其放入一个平面文件。
<Employee>
<FirstName>JIM</FirstName>
<LastName>SMITH</LastName>
<EmpAddress>
<StreetName>DARTMOUTH WAY</StreetName>
<STATE>OHIO</STATE>
</EmpAddress>
<EmpAddress>
<StreetName>SouthRidge Road</StreetName>
<STATE>WA</STATE>
</EmpAddress>
<PreviousCompany>
<CompName>DELL</CompName>
<CompAddress>
<StreetName>Road123</StreetName>
<STATE>WA</STATE>
</CompAddress>
<PreviousCompany>
<Employee>
则FLT文件数据应当被
JIM SMITH
DARTMOUTH WAY OHIO
SouthRidge Road WA
DELL
Road123 WA
因此,基本上XML的每个段都应该是平面文件中的一个记录。但任何段(如EmpAddress
或PreviousCompany
或CompAddress
)都可以重复多次。因此,平面文件中的顺序应该相同。
我确实想到了XML-INTO和XMLTABLE,但是我没有找到一个简单的解决方案。
请让我知道,如果有一个易于实施的解决方案。
3条答案
按热度按时间w41d8nur1#
XML-INTO
非常简单。构建一个数据结构来接收数据,然后以任何您想要的方式处理数据结构中的数据。关键是为XML-INTO
提供一种方法来告诉您每个循环结构存在多少个,或者是否缺少元素。下面是一个可以用于Employee XML的示例:要使用
XML-INTO
将数据加载到此结构中,只需用途:更多信息可在IBM文档中找到,网址为:https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/rzasd/allowmissopt.htm
anauzrmj2#
我用
AWK
和sed
做了同样的尝试。下面是代码:输出量:
v2g6jxz63#
谢谢大家的宝贵意见!
我做的方法如下:
我创建了一个临时表,将XML中的所有元素作为字段。(每个段都有一个不同的键)。我将每个段写入一个平面文件(每个段和更高的段将被填充。其余的将为空)。现在,我写了一个RPG程序,它有多个光标用于重复的段,并进行分组。
所以首先RPG程序会读取最高段,然后下一级,用更高段的关键字读取该段,等等。。