我有一个文本文件,我需要将其转换为xml。文本的第一行包含将作为xml标记的标题。其他每行都将作为xml标记的值。示例输入(ABC.txt
):
ID|Name|Subject|Marks
12|Sam|PHY,MATH|60
13|Gan|CHY|70
25|Rane|PHY|78
这将转换为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>
是否存在任何可以实现相同的模块,如XML :: CSV?
谢谢,
曼
答案 0 :(得分:4)
在Text::CSV中读取ABC.txt(设置适当的分隔符),将其转换为hasref并使用XML::Simple
写出
答案 1 :(得分:2)
XML::Simple在这里会很好用;创建数据的hashmap,将其提供给XML :: Simple,然后调用XMLout。你要做的唯一真正的工作就是将你的线路按到哈希图中......拆分为'|'得到田地,你就是那里的大部分。
答案 2 :(得分:0)
您可以设置一个包含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