我必须使用XML :: Simple来读取大量的xml文件数据库。
my $xml = XMLin("${file}", ForceArray => 1, KeyAttr => {});
问题是这些xml中的一些已损坏,我希望我的程序删除它们并继续运行。我无法找到任何方法来捕获XMLin中的错误
parser error : Start tag expected '<' not found
有什么想法吗?
答案 0 :(得分:3)
首先关闭 - 请不要使用XML::Simple
- 这是非常讨厌的。 Why is XML::Simple "Discouraged"?
为了解决你的观点 - 破解的XML应该对解析器来说是致命的 - 它必须die
(按设计)。在perl
中处理此问题的方法是将其包装在eval
块中,然后捕获$@
以查看它是否失败:
my $xml = eval { XMLin("${file}", ForceArray => 1, KeyAttr => {}); };
warn $@ if $@;