微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

传递错误的XML时,PHP 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();
}
试试吧
libxml_use_internal_errors(true);
$xdoc->loadXml($yourXml);
libxml_clear_errors();
return $xdoc->schemaValidate($schema)

这将禁用libxml错误并允许用户根据需要获取错误信息(或清除它们)

http://.php.net/manual/en/book.libxml.php

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。