首页 > 解决方案 > 将 XML 转换为平面文件

问题描述

我有一个要求,我必须从 IFS 获取 XML 文件并将其放入平面文件。平面文件应完全按照 XML 数据的格式加载 例如,如果 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 段都应该是平面文件中的一条记录。但是任何片段(如EmpAddressorPreviousCompanyCompAddress)都可以重复多次。所以平面文件应该有相同的顺序。

我确实想到了 XML-INTO 和 XMLTABLE,但我找不到一个简单的解决方案。

请让我知道是否有一个易于实施的解决方案。

标签: db2ibm-midrangerpgle

解决方案


我已经尝试过使用AWKand进行相同的操作sed。以下是代码:

#Removing blank line from the actual file using sed.

sed -r '/^\s*$/d' Employee >Employee1

Employee.awk

BEGIN { FS ="[></]";RS ="\n\n"; OFS =""}
$0 ~ search {print $5 "\t"$10,"\n"$17 "\t" $22,"\n"$32 "\t" $37,"\n"$47,"\n"$54 "\t" $59}

awk -f Employee.awk Employee1

输出:

JIM SMITH

DARTMOUTH WAY   OHIO

SouthRidge Road WA

DELL

Road123 WA

推荐阅读