1

我正在尝试执行以下代码,但它给出了错误代码:

use XML::Simple;
use Data::Dumper;

$xml = new XML::Simple (KeyAttr=>[]);# read XML file

$error =$xml->XMLin("trial.xml");
print "There are " . scalar@{$error->{problem}} . " problems.\n";

所以它给出了行中规定的错误:

print "There are " . scalar@{$error->{problem}} . " problems.\n";

请让我知道我做错了什么。谢谢你。

4

2 回答 2

3

根据错误消息,$error->{problem}不是数组引用。造成这种情况的通常原因是只有一个问题处于错误状态,而不是多个问题,在这种情况下 XML::Simple 不会生成数组。

在文档中查找ForceArray选项:https ://metacpan.org/module/GRANTM/XML-Simple-2.20/lib/XML/Simple.pm#ForceArray-1-in

于 2013-05-23T13:23:21.570 回答
0

看一下文档:

错误处理

XML 标准对不合规文档的问题非常明确。解析任何单个元素的错误(例如缺少结束标记)必须导致整个文档被拒绝。如果 XML::Simple 遇到解析错误,它将终止并显示适当的消息。

如果死亡不适合您的应用程序,您应该安排在 eval 块中调用 XMLin() 并在 $@ 中查找错误。例如:

my $config = eval { XMLin() };
PopUpMessage($@) if($@);

问候, 马蒂亚斯

于 2013-05-23T09:53:21.690 回答