PHP捕获SimpleXMLElement解析错误

Wes*_*son 8 php xml simplexml

我有一个脚本解析一些XML(adf)的东西.有时我们会收到破碎的XML数据(即语法,没有结束标记等).

SimpleXMLElement抛出一个错误并杀死我的脚本,如何分配类似的东西$xml_body = new SimpleXMLElement ($adf_xml);并捕获解析异常?


/home//Work//script/email_leads.php:46
堆栈跟踪:
0 /home//Work//script/email_leads.php(46)未捕获异常'Exception',消息'String无法解析为XML' :SimpleXMLElement - > __ construct('<?xml version ="...')
1 /home//Work//script/email_leads.php(97):generateFeed()2
{main}

Wes*_*son 11

好吧,显然抓住XML Parse错误有点像圣杯......我结束了

try { $x = new SimpleXMLElement($y, LIBXML_NOERROR); } catch (Exception $e) { echo $e; }
Run Code Online (Sandbox Code Playgroud)

  • 我发现这对我也不起作用.我不得不使用:$ x = new\SimpleXMLElement($ xmlString,LIBXML_NOERROR); 这似乎给了我一个可捕捉的例外.有关参考,请参阅[LIBXML_NOERROR]的PHP手册(http://php.net/manual/en/libxml.constants.php) (6认同)
  • try/catch似乎不适用于SimpleXMLElement.或者至少它没有为我加载非xml文件. (5认同)

bco*_*sca 5

libxml_use_internal_errors(true);
Run Code Online (Sandbox Code Playgroud)