使用perl XML :: Simple访问xml数据

时间:2016-10-25 15:31:10

标签: perl

我有一些xml数据,转储看起来像这样:

 $VAR1 = {
      'Members' => [
                        {
                          'Age' => '19',
                          'Name' => 'Bob'
                        },
                        {
                          'Age' => '18',
                          'Name' => 'Jane'
                        },
                        {
                          'Age' => '21',
                          'Name' => 'Pat'
                        },
                        {
                          'Age' => '22',
                          'Name' => 'June'
                        }
                      ],
      'Sports' => [
                           {
                             'Players' => '20',
                             'Name' => 'Tennis'
                           },
                           {
                             'Players' => '35',
                             'Name' => 'Basketball'
                           }
                         ],
       };    

我已尝试使用以下代码打印出数据:

foreach my $member (@($xml->{Members})) {
    print("Age: $xml->{Age}");
}

但不断收到错误:

  

不能使用字符串(" 4")作为HASH参考,而#34; strict refs"在使用中

知道为什么这不起作用?

1 个答案:

答案 0 :(得分:4)

您使用的语法错误。

#                   here ...   and here
#                    V               V
foreach my $member (@($xml->{Members})) { ... }

要取消引用,您需要大括号{},而不是括号()

一旦你解决了这个问题(我认为这是问题中的拼写错误,而不是真正的代码),你有:

foreach my $member ( @{ $xml->{Members} } ) {
    print "Age: $xml->{Age}";
}

但那还是错的。您想要访问$member,而不是整个$xml结构,因为它没有Age,是吗?

foreach my $member ( @{ $xml->{Members} } ) {
    print "Age: $member->{Age}\n";
}

那会给你

Age: 19
Age: 18
Age: 21
Age: 22