当 xml 格式不正确时,loadXml 会报告错误而不是抛出异常。如果您尝试在 try...catch 语句中执行 loadXml(),这很烦人。显然这是特性,而不是错误,因为这符合规范。
如果您希望捕获异常而不是生成报告,您可以执行以下操作
<?php
function HandleXmlError($errno, $errstr, $errfile, $errline)
{
if ($errno==E_WARNING && (substr_count($errstr,"DOMDocument::loadXML()")>0))
{
throw new DOMException($errstr);
}
else
return false;
}
function XmlLoader($strXml)
{
set_error_handler('HandleXmlError');
$dom = new DOMDocument();
$dom->loadXml($strXml);
restore_error_handler();
return $dom;
}
?>
在函数 HandleXmlError() 中返回 false 会导致回退到默认错误处理程序。