PHP Захват ошибки синтаксического анализа SimpleXMLElement

У меня есть скрипт, который анализирует некоторые 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 }