我有一个快速的功能来加载
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(); }