我有一个快速的功能来加载
XML字符串,并根据模式验证它.当它给出格式良好的XML时,它表现得非常完美.
然而,当我破解xml语法本身时,PHP会抛出致命错误并杀死脚本.我正在检查loadXML函数返回值,我想要一个简单的true / false.如果xml是脏的,loadXML()将失败,我只能返回验证失败.我已经尝试设置一个空的错误处理程序,但它仍然杀死了脚本.
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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。