Проверка PHP XML выдает неустранимые исключения при передаче неверного XML

У меня есть быстрая функция для загрузки строки 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();
}
5
задан Oliver 28 August 2011 в 17:51
поделиться