zoukankan      html  css  js  c++  java
  • 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(); 
    }
    
    
    ?>
    慢慢沉淀自己
  • 相关阅读:
    zookeeper
    消息中间件介绍
    Java实现动态代理的两种方式
    深入理解Java内存模型
    消息中间件(一)MQ详解及四大MQ比较
    synchronized关键字详解及分析锁升级过程
    JDK1.6的Synchronized底层优化(偏向锁、轻量级锁)
    分布式通信-tcp/ip socket
    技术点
    大众点评 cat
  • 原文地址:https://www.cnblogs.com/martinding/p/7478953.html
Copyright © 2011-2022 走看看