最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • PHP实现通过XSD校验XML

    正文概述 转载于:掘金(花呀花)   2021-01-05   408

    亲测OK,代码贴上:

    class DOMValidator
    {
        public $feedSchema;
    
        public $feedErrors = 0;
    
        public $errorDetails;
    
        public function __construct()
        {
            $this->handler = new \DOMDocument('1.0', 'utf-8');
        }
    
        /**
         * 组装错误信息
         * @return string
         */
        private function libxmlDisplayError($error)
        {
            $errorString = "错误码: $error->code" ." ," ." 文件:$error->file (行:{$error->line}):";
            $errorString .= trim($error->message);
            return $errorString;
        }
    
        /**
         * 组装错误信息
         * @return array
         */
        private function libxmlDisplayErrors()
        {
            $errors = libxml_get_errors();
            $result = [];
            foreach ($errors as $error) {
                $result[] = $this->libxmlDisplayError($error);
            }
            libxml_clear_errors();
            return $result;
        }
    
        /**
         * 验证过程
         */
        public function validateFeeds($feeds)
        {
            if (!class_exists('DOMDocument')) {
                throw new \DOMException("'DOMDocument' class not found!");
                return false;
            }
            if (!file_exists($this->feedSchema)) {
                throw new \Exception('Schema is Missing, Please add schema to feedSchema property');
                return false;
            }
            libxml_use_internal_errors(true);
            if (!($fp = fopen($feeds, "r"))) {
                die("could not open XML input");
            }
            $contents = fread($fp, filesize($feeds));
            fclose($fp);
    
            $this->handler->loadXML($contents, LIBXML_NOBLANKS);
            if (!$this->handler->schemaValidate($this->feedSchema)) {
                $this->errorDetails = $this->libxmlDisplayErrors();
                $this->feedErrors = 1;
            } else {
                return true;
            }
        }
    
        /**
         * 输出错误
         */
        public function displayErrors()
        {
            return $this->errorDetails;
        }
    
    }
    
    
    /**
     * 使用
     */
    $validator = new DOMValidator;
    
    //选择xsd文件
    $validator->feedSchema = __DIR__ . '/export.xsd';
    
    $validated = $validator->validateFeeds('CEB603Message.xml');
    if ($validated) {
        echo "格式校验通过";
    } else {
        print_r($validator->displayErrors());
    }
    

    起源地下载网 » PHP实现通过XSD校验XML

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元