传递错误的XML时,PHP XML验证会引发致命的异常
发布时间:2020-12-16 05:34:02 所属栏目:百科 来源:网络整理
导读:我有一个快速的功能来加载 XML字符串,并根据模式验证它.当它给出格式良好的XML时,它表现得非常完美. 然而,当我破解xml语法本身时,php会抛出致命错误并杀死脚本.我正在检查loadXML函数返回值,我想要一个简单的true / false.如果xml是脏的,loadXML()将失败,我
我有一个快速的功能来加载
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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |