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