example: 1.xml
<?xml version="1.0"?>
<results fid="4769">
<branch>edream2.1-feature-interactive-timescape-widget</branch>
<branch>edream2.1-feature-interactive-timescape-widget</branch>
</results>
#!/usr/bin/perl -w
use XML::Simple;
use Data::Dumper;
my $xml = new XML::Simple;
my $data = $xml->XMLin("1.xml");
print Dumper($data);
if(exists $data->{branch})
{
my @array = ref($data->{branch}) ? @{$data->{branch}} : ($data->{branch});
print @array;
}
#-------------------------------------------------------------------------------------
#!/usr/bin/perl -w
use XML::Simple;
use Data::Dumper;
my $xml=XML::Simple->new(ForceArray => 1);
my $data=$xml->XMLin("1.xml");
print Dumper($data);
while(my($a,$b)=each %$data)
{
if( ref($b))
{
foreach my $i(@$b)
{
print "$a\t$i\n";
}
}
else{
print "$a\t$b\n";
}
}
PS:有时候xml结构很复杂,所以不一定就是简单的hash,shuzu格式。。所以需要使用ref来判断返回的值是array,还是hash,还是空白
查看: ref语法
perldoc -f ref
SCALAR
ARRAY
HASH
CODE
REF
GLOB
LVALUE
FORMAT
IO
VSTRING
Regexp
转载于:https://blog.51cto.com/biott/1104700