【问题标题】:Perl : converting csv file to xmlPerl:将csv文件转换为xml
【发布时间】:2017-02-14 17:32:01
【问题描述】:

我正在尝试解析 csv 文件并将其转换为 XML。 .csv 文件包含一个条目列表,以逗号分隔。因此,两个示例条目如下所示:

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

文件中的某些字段为空白,并且文件没有标题行。 任何建议如何解决这个问题。还没想好怎么处理这个。 谢谢。

【问题讨论】:

  • 使用Text::CSV 读取它,然后使用模块编写一个xml 文件。例如,XML::LibXML,您将在其中使用 XML::LibXML::Document。还有其他模块,首先是XML::TwigXML::Writer 曾经很流行,但我不太了解它,也不知道它现在的地位。
  • 您需要想出如何来组织您的数据,即。您的 xml 将如何显示。至于用XML::LibXML 写作,这里有一个可能有用的SO post,还有一个PerlMonks post(这些链接不适合上面的评论)。
  • 这并不难,但 XML 比 CSV 复杂得多。因此,至少我们需要了解您的 XML 应该是什么样子。

标签: perl


【解决方案1】:
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;

当然,如果您告诉我们输出应该是什么样子,我们可能会想出一些更复杂的东西!

【讨论】:

    猜你喜欢
    • 2021-04-29
    • 2018-01-23
    • 2011-03-05
    • 2015-10-28
    • 2014-11-22
    • 2017-04-18
    • 1970-01-01
    • 2020-03-21
    相关资源
    最近更新 更多