我正在尝试执行以下代码,但它会给出错误 代码:
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";
请让我知道我做错了什么。 谢谢。
答案 0 :(得分:3)
根据错误消息,$error->{problem}
不是数组引用。通常的原因是错误中只有一个问题,而不是几个问题,在这种情况下,XML :: Simple不生成数组。
在文档中查找ForceArray
选项:https://metacpan.org/module/GRANTM/XML-Simple-2.20/lib/XML/Simple.pm#ForceArray-1-in
答案 1 :(得分:0)
看一下文档:
错误处理
XML标准在不合规问题上非常明确 文档。解析任何单个元素时出错(例如a 缺少结束标记)必须导致整个文档被拒绝。 如果遇到a,XML :: Simple将会丢失相应的消息 解析错误。
如果死亡不适合您的申请,您应该安排 在eval块中调用XMLin()并在$ @中查找错误。例如:
my $config = eval { XMLin() }; PopUpMessage($@) if($@);
问候,马蒂亚斯