PHP捕获SimpleXMLElement解析错误

时间:2010-11-09 19:31:13

标签: xml simplexml php

我有一个解析一些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}

3 个答案:

答案 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
}