У меня есть скрипт, который анализирует некоторые XML (adf) вещи. Иногда мы получаем разбитые XML-данные (т. Е. Синтаксис, конечный тег и т. Д.).
SimpleXMLElement
выдает ошибку и убивает мой скрипт, как можно присвоить что-то вроде $xml_body = new SimpleXMLElement ($adf_xml);
и поймать исключение разбора?
Исключить исключение «Исключение» с сообщением «Строка не может быть проанализирована как XML» в /home//Work//script/email_leads.php:46
Трассировки стека:
0 /home//Work//script/email_leads.php(46): SimpleXMLElement -> __ construct ('<? Xml version = "…')
1 /homes//Work//script/email_leads.php(97): generateFeed ()
2 {main}
Хорошо, так что, видимо, захват XML Parse errors – это нечто вроде Holy Grail … Я закончил
try { $x = new SimpleXMLElement($y); } catch (Exception $e) { echo $e; }
libxml_use_internal_errors(true);
xml_parse
возвращает логическое значение, указывающее, был ли XML успешно проанализирован. Поэтому это должно работать:
$fp = fopen($xml_file, "r"); $xml_data = fread($fp, 80000); if(!(xml_parse($xml_parser, $xml_data, feof($fp)))){ # do something }