2011-03-18 3 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을 호출하십시오. 당신이해야 할 유일한 실제 작업은 라인을 해시 맵에 마사지하는 것입니다. split on '|' 들판을 얻으려면 당신이 그곳에있는 가장 좋은 방법입니다.

0
당신은 CSV 컨텐츠를 보유하고 임시 파일을 설정하고 먹일 수

하나 XML::CSV에 : Text::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 (적절한 구분을 설정), hasref과 함께 쓰기를 돌려 XML::Simple

관련 문제