私はPerl言語が初めてです。私は次のようなXMLを持っています
<xml>
<date>
<date1>2012-10-22</date1>
<date2>2012-10-23</date2>
</date>
</xml>
この XML ファイルを解析して配列に格納したいと考えています。perlスクリプトを使用してこれを行う方法は?
私はPerl言語が初めてです。私は次のようなXMLを持っています
<xml>
<date>
<date1>2012-10-22</date1>
<date2>2012-10-23</date2>
</date>
</xml>
この XML ファイルを解析して配列に格納したいと考えています。perlスクリプトを使用してこれを行う方法は?
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'
];
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";
CPAN mod を使用できない/使用したくない場合:
my @hits= $xml=~/<date\d+>(.+?)<\/date\d+>/
@hits
これにより、配列内のすべての日付が得られます。
XML が例ほど単純でない場合は、XML パーサーを使用することをお勧めXML::Parser
します。これはその 1 つです。