2010-08-24 4 views
0

Je dispose d'un fichier xml comme celui-ciperl analyse syntaxique xml aide

<testcase> 
<sf_params> 
<dir>1</dir> 
<sfid>2</sfid> 
</sf_params> 
</testcase> 

je xml :: simple (parsing perl) et a obtenu le o/p comme

$VAR1 = { 
      'sf_params' => [ 
         { 
          'sfid' => [ 
            '2' 
            ], 
          'dir' => [ 
            '1' 
            ] 
         } 
         ] 
     }; 

Comment puis-je accéder ou affecter la valeur de dir à une variable, par exemple $dir = $var1->{sf_params}->{dir}

Répondre

1

Est-ce que XML :: XPath module vous aider? Essayez code comme

my $file = XML::XPath->new (xml => "/path/to/your/file.xml"); 
my $dirs = $file->find('/sf_params/dir'); 
foreach my $foo ($dirs->get_nodelist) { 
    printf "dir is %s\n",$foo->string_value; 
} 

et l'adapter à vos besoins :)

1

option Ne pas utiliser ForceArray => 1 (= utiliser ForceArray => 0). Ensuite, vous obtiendrez

$VAR1 = { 
      'sf_params' => { 
         'sfid' => '2', 
         'dir' => '1' 
         } 
     }; 

et

$dir = $var1->{sf_params}->{dir} 

fonctionnera. Ou si vous devez utiliser ForceArray:

$dir = $var1->{sf_params}->[0]->{dir}->[0]; 

fonctionnera dans ce cas, mais il est laid.

+0

ça ne fonctionne pas pour moi –