php - 针对xsd的xml验证

时间:2014-12-05 15:19:26

标签: php xml validation xsd

当我使用多个验证工具对xsd验证我的xml文件时,它们都会返回正面结果:验证成功。

但是当使用schemaValidate在php中执行此操作时,验证会在显示空白页面60秒后完全中断。我试图找到一些解释:

$doc = new DOMDocument();

$doc->load('C:\a\xml.xml');


try{

    $is_valid_xml = $doc->schemaValidate('http://xxxxxxx/schema.xsd');

    if ($is_valid_xml == true) {
        echo 'ok';
        }else {
        throw new Exception('Validation not successful!');
    }

    }catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "<br />"; 

    } finally {
    print_r(error_get_last());
}

当我在其他一些通用xml + xsd示例中使用上述方法时,它可以正常工作。如果我故意弄乱那个xml,我会得到结果“捕获异常:验证不成功!”和一些错误信息,但与我真正的xml + xsd文件(这是更复杂的)我得到空白页。

知道为什么会这样吗?这个确切的60秒似乎是一些会话超时或类似的东西,但我已经在php.ini中查看它设置为1440秒(session.gc_maxlifetime = 1440)......

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。问题出在php.ini&gt;&gt;&gt; max_execution_time = 30