2012-11-21 60 views
3

我想使用XML :: Parser解析一個簡單的字符串。這工作正常。但我不知道如何訪問結果。Perl XML :: Parser - 如何訪問簡單的分析樹?

#!/usr/bin/perl 

use Data::Dumper; 
use XML::Parser; 

my $parser = XML::Parser->new(Style => 'Tree'); 
my $tree = $parser->parse('<xml type="test" Id="ca19cfd5" result="1 test 2 test 3" elapsed="9" Size="12345" />'); 

print Dumper($tree); 

顯示我

$VAR1 = [ 
'xml', 
[ 
{ 
'Size' => '12345', 
'Id' => 'ca19cfd5', 
'type' => 'test', 
'elapsed' => '9', 
'result' => '1 test 2 test 3' 
} 
] 
]; 

所以它完全可以解析我的字符串。但是,我如何訪問這些字段?像「我的$結果= $樹...」

給定的xml字符串將始終具有相同的語法,如上所示。只有內容不同。

TNX提前, 安基杜

回答

2

屬性您正在尋找在$tree->[1]->[0]

my $atts= $tree->[1]->[0]; 

然後

print "size: $atts->{Size}\n"; 

也就是說XML解析器::是不是最簡單的模塊使用,它有點太低級。 XML :: Twig或XML :: LibXML會給你更容易的東西。

+0

太棒了! TNX! 那麼,XML :: Parser是該服務器上唯一可用的XML模塊。在未連接到Internet的系統上安裝perl模塊是一件痛苦的事情! :(;) – Enkidu

+0

順便說一句,我如何獲得所有現有屬性的列表? – Enkidu

+0

屬性列表:'keys%$ atts' – mirod

1

,你可以看看到其他XML解析器,產生simplier結構

例如我的模塊:

  • XML ::快速
  • XML ::哈希:: LX
  • XML: :Parser :: Style :: ETree