Perl XML解析以获取数据

时间:2012-05-25 10:59:08

标签: xml perl

是否可以使用perl脚本从这样的XML文件中获取数据(war,Europe,First等)并将它们存储在.txt文件中?

<Node id="93" /> 
  war 
  <Node id="102" /> 
  Europe 
  <Node id="112" /> 
  first 
  <Node id="117" /> 
  <Node id="118" /> 
  world
  <Node id="120" /> 
  <Node id="121" /> 
  country 
  <Node id="126" /> 
  fire
  <Node id="132" /> 
  <Node id="135" /> 
  The 
  <Node id="139" /> 
  Government
  <Node id="144" /> 
  has greeted 
  <Node id="157" /> 
  King
  <Node id="159" /> 
  <Node id="160" /> 

3 个答案:

答案 0 :(得分:1)

您可以使用XML::LibXML

use XML::LibXML qw();
my $dom = XML::LibXML->load_xml(string => <<'XML');
<root>
  <Node id="93" />
  war
  <Node id="102" />
  Europe
  <Node id="112" />
  first
  <Node id="117" />
  <Node id="118" />
  world
  <Node id="120" />
  <Node id="121" />
  country
  <Node id="126" />
  fire
  <Node id="132" />
  <Node id="135" />
  The
  <Node id="139" />
  Government
  <Node id="144" />
  has greeted
  <Node id="157" />
  King
  <Node id="159" />
  <Node id="160" />
</root>
XML

print $dom->textContent;

答案 1 :(得分:0)

您可以使用XML::Simple。看起来你想要的只是内容部分。

use strict;
use warnings;
use XML::Simple;
my $xml = qq~<root>
<Node id="93" /> 
  war 
  <Node id="102" /> 
  Europe 
  <Node id="112" /> 
  first 
  <Node id="117" /> 
  <Node id="118" /> 
  world
  <Node id="120" /> 
  <Node id="121" /> 
  country 
  <Node id="126" /> 
  fire
  <Node id="132" /> 
  <Node id="135" /> 
  The 
  <Node id="139" /> 
  Government
  <Node id="144" /> 
  has greeted 
  <Node id="157" /> 
  King
  <Node id="159" /> 
  <Node id="160" />
</root>
~;

my $ref = XMLin($xml);
open $out, '>', 'output.txt' or die "Could not open output file";
print $out join "\n", map {s/\s{2,}//g;$_} @{$ref->{'content'}};
close $out;

您还可以使用其他XML模块。

答案 2 :(得分:0)

使用XML::XSH2

open 1.xml ;
echo (/) ;