2010-08-24 98 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