當 XML 格式不正確時,loadXml 會回報錯誤,而不是拋出例外。如果您嘗試在 try...catch 陳述式中使用 loadXml(),這會很惱人。顯然這是一個特性,而不是錯誤,因為這符合規範。
如果您想要攔截例外而不是產生報告,您可以執行以下操作
<?php
函式 HandleXmlError($errno, $errstr, $errfile, $errline)
{
if ($errno==E_WARNING && (substr_count($errstr,"DOMDocument::loadXML()")>0))
{
throw new DOMException($errstr);
}
else
return false;
}
函式 XmlLoader($strXml)
{
set_error_handler('HandleXmlError');
$dom = new DOMDocument();
$dom->loadXml($strXml);
restore_error_handler();
return $dom;
}
?>
在 HandleXmlError() 函式中返回 false 會導致 fallback 到預設的錯誤處理器。