我在数据库中有几个我定期检查的XML提要。我如何处理数据:
我从DB加载这些XML链接并循环遍历simplexml_load_file()
我正在解析数据。
但有时由于XML文件格式错误导致错误而终止脚本,例如:
Warning: simplexml_load_file() [function.simplexml-load-file]: URL_ADDRESS:1: parser error : Invalid XML encoding name in path_to_script on line 98
Warning: simplexml_load_file() [function.simplexml-load-file]: <?xml version="1.0" encoding=""?> in path_to_scriptp on line 98
Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in path_to_script on line 98
Warning: Invalid argument supplied for foreach() in path_to_script on line 99
有没有办法处理这个错误,当发生错误时,会跳过这个XML提要,脚本会继续下一个吗?
答案 0 :(得分:1)
使用libxml_use_internal_errors()来抑制所有XML错误,然后使用libxml_get_errors()对它们进行迭代。
答案 1 :(得分:1)
如果simplexml_load_file
Docs无法加载文件,则会返回false
。如果您使用LIBXML_NOERROR
optionDocs,则不会报告错误。
所以你需要做的就是检查返回值:
foreach ($files as $file)
{
$xml = simplexml_load_file($file, null, LIBXML_NOERROR);
if ($xml === false) {
continue;
}
... process $xml ...
}