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/>\n"; 
	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>\n"; 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(); } ?>

转载于:https://www.cnblogs.com/martinding/p/7478953.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值