我有一个解析一些XML(adf)内容的脚本。有时我们收到破碎的XML数据(即语法,没有结束标记等)。
SimpleXMLElement
会抛出错误并杀死我的脚本,如何分配$xml_body = new SimpleXMLElement ($adf_xml);
之类的内容并捕获解析异常?
/home//Work//script/email_leads.php:46中带有消息'String无法解析为XML'的未捕获异常'Exception' 堆栈跟踪:
0 /home//Work//script/email_leads.php(46):SimpleXMLElement-> __ construct('<?xml version =“...')
1 /home//Work//script/email_leads.php(97):generateFeed()
2 {main}
答案 0 :(得分:10)
好吧,显然抓住XML Parse错误有点像圣杯......我最终只是
try { $x = new SimpleXMLElement($y); } catch (Exception $e) { echo $e; }
答案 1 :(得分:5)
libxml_use_internal_errors(true);
答案 2 :(得分:0)
xml_parse
返回一个布尔值,指示XML是否已成功解析。因此,这应该有效:
$fp = fopen($xml_file, "r");
$xml_data = fread($fp, 80000);
if(!(xml_parse($xml_parser, $xml_data, feof($fp)))){
# do something
}