У меня есть быстрая функция для загрузки строки XML и проверки ее соответствия схеме. Когда ему дан правильно сформированный XML, он ведет себя отлично.
Однако, когда я испортил сам синтаксис xml, php выдает фатальную ошибку и убивает скрипт. Я проверяю возвращаемое значение функции loadXML, и мне нужно простое значение true / false. Если xml грязный, loadXML () завершится ошибкой, и я могу просто вернуть ошибку проверки. Я пробовал установить пустой обработчик ошибок, но он все равно убивает скрипт.
Есть идеи? Мне нужно понизить уровень ошибок или что-то в этом роде?
Включенный код для справки (PHP):
function __maskerrors(){};
function ValidateImageXML($xml_string)
{
/* Parse XML data string into DOM object */
$xdoc = new DomDocument;
/* Calculate schema location */
$schema = dirname(realpath(__FILE__));
$schema.= "/image-xml-schema.xsd";
/* Mask any errors */
set_error_handler('__maskerrors');
/* Parse xml string, check for success */
if($xdoc->loadXML($xml_string))
{
/* Validate xml against schema */
if($xdoc->schemaValidate($schema))
{
/* Valid XML structure & valid against schema, return true */
return true;
}
else
{
/* Valid XML structure, but invalid against schema. Return false */
return false;
}
}
else
{
/* Invalid XML structure, return false */
return false;
}
/* Stop masking errors */
restore_error_handler();
}