1

私はPerl言語が初めてです。私は次のようなXMLを持っています

<xml>
   <date>
       <date1>2012-10-22</date1>
       <date2>2012-10-23</date2>
   </date>
</xml>

この XML ファイルを解析して配列に格納したいと考えています。perlスクリプトを使用してこれを行う方法は?

4

4 に答える 4

3
Use XML::Simple - Easy API to maintain XML (esp config files) or 
see XML::Twig - A perl module for processing huge XML documents in tree mode.

例:

use strict;
use warnings;
use XML::Simple;
use Data::Dumper;

my $xml = q~<xml>
   <date>
       <date1>2012-10-22</date1>
       <date2>2012-10-23</date2>
   </date>
</xml>~;

print $xml,$/;

my $data = XMLin($xml);

print Dumper( $data );

my @dates;
foreach my $attributes (keys %{$data->{date}}){
  push(@dates, $data->{date}{$attributes})
}

print Dumper(\@dates);

出力:

$VAR1 = [
          '2012-10-23',
          '2012-10-22'
        ];
于 2013-06-07T11:13:00.650 に答える
2

XML::LibXMLのラッパーであるXML ::XSH2を使用します。

#!/usr/bin/perl
use warnings;
use strict;

use XML::XSH2;

xsh << '__XSH__';
  open 2.xml ;
  for $t in /xml/date/* { 
      my $s = string($t) ;
      perl { push @l, $s }
  }
__XSH__

no warnings qw(once);
print join(' ', @XML::XSH2::Map::l), ".\n";
于 2013-06-07T11:44:05.210 に答える
-2

CPAN mod を使用できない/使用したくない場合:

my @hits= $xml=~/<date\d+>(.+?)<\/date\d+>/

@hitsこれにより、配列内のすべての日付が得られます。

XML が例ほど単純でない場合は、XML パーサーを使用することをお勧めXML::Parserします。これはその 1 つです。

于 2013-06-07T11:08:05.217 に答える