2010-08-24 102 views
0

我有這樣perl的XML解析的幫助

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

我用XML ::簡單(perl的解析)一個XML文件,並得到了O/P爲

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

如何訪問或將值dir分配給變量,例如$dir = $var1->{sf_params}->{dir}

回答

1

XML :: XPath模塊對您有幫助嗎?嘗試這樣的代碼

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; 
} 

並調整到您的需要:)

1

不要使用ForceArray => 1選項(=使用ForceArray => 0)。然後你會得到

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

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

會工作。或者,如果你必須使用ForceArray

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

會在這種情況下工作,但它的醜陋。

+0

它不適合我 – 2010-08-25 09:09:05