Perl 管道分隔文本到xml的转换
我有一个文本文件需要转换成xml。文本的第一行包含标题,标题将作为xml标记,其他每一行将作为xml标记的值。输入示例(Perl 管道分隔文本到xml的转换,perl,shell,Perl,Shell,我有一个文本文件需要转换成xml。文本的第一行包含标题,标题将作为xml标记,其他每一行将作为xml标记的值。输入示例(ABC.txt): 这将转换为Output.xml: <Record> <ID>12</ID> <Name>Sam</Name> <Subject>PHY,MATH</Subject> <Marks>60</Marks> </Record> &
ABC.txt
):
这将转换为Output.xml
:
<Record>
<ID>12</ID>
<Name>Sam</Name>
<Subject>PHY,MATH</Subject>
<Marks>60</Marks>
</Record>
<Record>
<ID>13</ID>
<Name>Gan</Name>
<Subject>CHY</Subject>
<Marks>70</Marks>
</Record>
<Record>
<ID>25</ID>
<Name>Rane</Name>
<Subject>PHY</Subject>
<Marks>78</Marks>
</Record>
12
山姆
菲,数学
60
13
赣
糜
70
25
拉内
物理层
78
是否有任何模块可以实现与XML::CSV相同的功能
谢谢
人在这里会工作得很好;创建数据的hashmap,将其输入XML::Simple,然后调用XMLout。你要做的唯一真正的工作就是把你的行整理成hashmap。。。在“|”上拆分以获取字段,您将在大部分时间内完成此操作。在这里可以很好地工作;创建数据的hashmap,将其输入XML::Simple,然后调用XMLout。你要做的唯一真正的工作就是把你的行整理成hashmap。。。在“|”上拆分以获取字段,您就可以完成大部分操作。您可以设置一个临时文件来保存CSV内容,并将该文件馈送到
XML::CSV
:
#!/usr/bin/perl -w
use strict;
use warnings;
use Data::Dumper;
open my $fh, '<', "abc.txt" or die "can't open input";
my @in_content = <$fh>;
close $fh;
my @tmp;
open my $out, '>', "temp.txt" or die "can't open tempfile";
foreach my $in(@in_content){
print {$out} join(';', split(/\|/,$in));
}
close $out;
# now, you can use temp.txt as input for XML::CSV
#/usr/bin/perl-w
严格使用;
使用警告;
使用数据::转储程序;
打开我的$fh,“您可以设置一个临时文件来保存CSV内容,并将该文件馈送到XML::CSV
:
#!/usr/bin/perl -w
use strict;
use warnings;
use Data::Dumper;
open my $fh, '<', "abc.txt" or die "can't open input";
my @in_content = <$fh>;
close $fh;
my @tmp;
open my $out, '>', "temp.txt" or die "can't open tempfile";
foreach my $in(@in_content){
print {$out} join(';', split(/\|/,$in));
}
close $out;
# now, you can use temp.txt as input for XML::CSV
#/usr/bin/perl-w
严格使用;
使用警告;
使用数据::转储程序;
打开我的$fh,“在中读取ABC.txt(设置适当的分隔符),将其转换为hasref并使用读取ABC.txt(设置适当的分隔符)写出,将其转换为hasref并使用