2011-03-18 75 views
0

我有一个文本文件,我需要将其转换为XML。文本的第一行包含标题,它将作为xml标记。其他各行将作为xml标记的值。例如输入(ABC.txt):管道分隔文本到XML转换

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?

感谢,

回答

2

XML::Simple将工作做好在这里;创建数据的散列表,将其提供给XML :: Simple,然后调用XMLout。你必须做的唯一真正的工作就是将你的线条加入hashmap中......分割'|'获得领域,你就是那里的大部分。

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 
4

阅读的abc.txt在Text::CSV(设置适当的分隔符),把它交给hasref,并写出来XML::Simple

相关问题