Perl:将csv文件转换为xml
问题描述:
我想解析一个csv文件并将其转换为XML。 .csv文件由用逗号分隔的条目列表组成。因此,两个示例条目如下所示:Perl:将csv文件转换为xml
AP,AB,A123,B123,,,
MA,NA,M123,TEXT,TEXT,TEXT_VALUE
某些字段在文件中是空白的而文件没有标题行。 任何建议如何去与此。还没有想出如何去与此。 谢谢。
答
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;
当然,如果你告诉我们,输出应该是什么样子,我们也许可以想出的东西多一点复杂!
使用[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
你需要想出你想要你的数据组织,即。你的xml将如何看待。至于用'XML :: LibXML'编写,这里可能有用[SO post](http://*.com/a/2934794/4653379),另一个[PerlMonks post](http://www.perlmonks .org /?node_id = 1026789)(这些链接不适合上述评论)。 – zdim
这并不难,但XML比CSV复杂得多。所以至少我们需要知道你的XML应该是什么样的。 – Sobrique