Perl XML :: Parser - 如何访问一个简单的解析树?

时间:2012-11-21 15:54:37

标签: xml perl parsing

我想使用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'
 }
 ]
 ];

所以它完全可以解析我的字符串。但是如何访问这些字段?像“我的$ result = $ tree ......”这样的东西

给定的xml字符串将始终具有如上所示的相同语法。只有内容不同。

提前Tnx, 安基杜

2 个答案:

答案 0 :(得分:2)

您要查找的属性位于$tree->[1]->[0]

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

然后

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

那说XML :: Parser不是最容易使用的模块,它有点太低级了。 XML :: Twig或XML :: LibXML将为您提供更轻松的功能。

答案 1 :(得分:1)

您可以查看其他XML分析器,它们可以生成更简单的结构

例如我的模块:

  • XML ::快速
  • XML ::哈希:: LX
  • XML ::解析器::风格:: ETree