0
我试图解析XML文件。 Xml文件可以在@http://pastebin.com/fvuwbrh9找到。 我已将这个xml文件保存为packages.xml
。XML ::简单:解析嵌套的哈希值/阵列
目标:列出所有被<packagereq>
标签在XML(我指其归入group
在自卸车输出packagereq
)包围的名称。
我写了下面的脚本调用rpm.pl
:
#!/usr/bin/perl -w
use strict;
use XML::Simple;
use Data::Dumper;
my $ref = XMLin ('packages.xml');
#print Dumper ($ref);
foreach my $a (keys %{ $ref->{group} })
{
if (exists $ref->{group}->{$a}->{packagelist})
{
foreach my $b (@{ $ref->{group}->{$a}->{packagelist}->{packagereq} })
{
print $b->{content}."\n"; ### <<< referring the Dumper out put
}
}
}
现在我的剧本要中途throgh并打印包名,但随后被下面的错误终止:
Not an ARRAY reference at rpm.pl line 29.
上述错误之后,该脚本不会处理XML文件的其余部分并终止。
上面的错误使我相信的$ref->{group}->{$a}->{packagelist}->{packagereq}
冥冥中值不是一个数组引用。
我已经为carefuly我可以throguh XML文件(或翻车机输出),但发现packagereq
始终指向数组引用,除非当然,我忽略了一些,但我怀疑如此。
你能否提供关于为什么会抱怨Not an ARRAY ref
一些输入。
谢谢。
就是这样。非常感谢。顺便说一下,你推荐哪个模块读取perl中的XML文件? – slayedbylucifer
我使用XML :: LibXML。有点罗嗦,但没有意外。它还允许您使用最强大的XPath查询。 – ikegami
那么,我将通过使用XML :: LibXML重写上面的脚本来立即给出它。谢谢。 – slayedbylucifer