• 5.【xml schema 】php 验证xsd函数


    之前的笔记里面提到 可以使用 schemaValidate 函数来验证 xsd 但是 光使用上面的函数可能显示的错误信息一大坨 不方便管理 可以使用下面几个函数管理错误信息

    libxml_use_internal_errors libxml_use_internal_errors — Disable libxml errors and allow user to fetch error information as needed 不显示libxml的错误信息但是允许user 自己抓取错误信息
    syntax bool libxml_use_internal_errors ([ bool $use_errors = false ] ) 默认参数是false就是会显示错误信息

    我们使用的主要函数如下:

    libxml_clear_errors
    libxml_disable_entity_loader
    libxml_get_errors
    libxml_get_last_error
    libxml_set_external_entity_loader
    libxml_set_streams_context
    libxml_use_internal_errors

    然后使用 libxml_get_errors 抓取所有的错误信息 然后 libxml_clear_errors 清除所有的errors

    就可以捕捉所有的错误信息
    参考 http://php.net/manual/en/function.libxml-get-errors.php

    下面是整个一个代码

    <?php
    function libxml_display_error($error) 
    { 
    	$return = "<br/>
    "; 
    	switch ($error->level) { 
    		case LIBXML_ERR_WARNING: 
    		$return .= "<b>Warning $error->code</b>: "; 
    		break; 
    		case LIBXML_ERR_ERROR: 
    		$return .= "<b>Error $error->code</b>: "; 
    		break; 
    		case LIBXML_ERR_FATAL: 
    		$return .= "<b>Fatal Error $error->code</b>: "; 
    		break; 
    	} 
    	$return .= trim($error->message); 
    	if ($error->file) { 
    		$return .= " in <b>$error->file</b>"; 
    	} 
    	$return .= " on line <b>$error->line</b>
    "; 
    
    	return $return; 
    } 
    
    function libxml_display_errors() { 
    	$errors = libxml_get_errors(); 
    	var_dump($errors);exit;
    	foreach ($errors as $error) { 
    		print libxml_display_error($error); 
    	} 
    	libxml_clear_errors(); 
    } 
    
    // Enable user error handling 
    libxml_use_internal_errors(true); 
    
    $xml = new DOMDocument(); 
    $xml->load('./demo.xml'); 
    
    if ($xml->schemaValidate('./book.xsd')) {
    	echo "validated</n>"; 
    	
    }else{
    	libxml_display_errors(); 
    }
    
    
    ?>
    慢慢沉淀自己
  • 相关阅读:
    2021.07.13 学习总结
    2021.07.12 学习总结
    2021.07.11 学习总结
    form表单提交失败
    url传参和解决中文乱码
    layui日期选择无效的问题
    Eclipse中快速生成Javabean的方法
    一种控制台输出效果的方法
    暑期周总结
    环境配置2
  • 原文地址:https://www.cnblogs.com/martinding/p/7478953.html
Copyright © 2020-2023  润新知