Perl:将csv文件转换为xml

Perl:将csv文件转换为xml

问题描述:

我想解析一个csv文件并将其转换为XML。 .csv文件由用逗号分隔的条目列表组成。因此,两个示例条目如下所示:Perl:将csv文件转换为xml

AP,AB,A123,B123,,, 
MA,NA,M123,TEXT,TEXT,TEXT_VALUE 

某些字段在文件中是空白的而文件没有标题行。 任何建议如何去与此。还没有想出如何去与此。 谢谢。

+3

使用[Text :: CSV](http://search.cpan.org/~ishigaki/Text-CSV-1.91/lib/Text/CSV.pm)阅读它,然后使用模块编写一个xml文件那。例如,[XML :: LibXML](http://search.cpan.org/dist/XML-LibXML/LibXML.pod),您将使用[XML :: LibXML :: Document](http:// search.cpan.org/dist/XML-LibXML/lib/XML/LibXML/Document.pod)。还有其他模块,[XML :: Twig](http://search.cpan.org/~mirod/XML-Twig-3.49/Twig.pm)。 [XML :: Writer](http://search.cpan.org/dist/XML-Writer/Writer.pm)曾经很流行,但我对它的了解不多,现在也不知道。 – zdim

+2

你需要想出你想要你的数据组织,即。你的xml将如何看待。至于用'XML :: LibXML'编写,这里可能有用[SO post](http://*.com/a/2934794/4653379),另一个[PerlMonks post](http://www.perlmonks .org /?node_id = 1026789)(这些链接不适合上述评论)。 – zdim

+1

这并不难,但XML比CSV复杂得多。所以至少我们需要知道你的XML应该是什么样的。 – Sobrique

print "<myXML>\n"; 
while (<>) { 
    print "<aRow>$_</aRow>\n"; 
} 
print "</myXML>\n"; 

或者,使用XML ::的libxml,这样的事情:

#!/usr/bin/perl 

use strict; 
use warnings; 

use XML::LibXML; 

my $doc = XML::LibXML::Document->createDocument; 

my $root = $doc->createElement('myXML'); 
$doc->setDocumentElement($root); 
$root->appendChild($doc->createTextNode("\n")); 

while (<>) { 
    chomp; 
    my $row = $doc->createElement('aRow'); 
    $root->appendChild($row); 
    $row->appendChild($doc->createTextNode($_)); 
    $root->appendChild($doc->createTextNode("\n")); 
} 

print $doc->toString; 

当然,如果你告诉我们,输出应该是什么样子,我们也许可以想出的东西多一点复杂!

+1

技术上正确的是最好的一种正确! – Sobrique

+1

你是一个邪恶的人! +1! – tjd