eclipxe/xmlschemavalidator

用于XML模式验证的PHP库

v3.0.4 2024-03-09 01:15 UTC

This package is auto-updated.

Last update: 2024-09-09 02:30:27 UTC


README

Source Code Latest Version Software License Build Status Scrutinizer Coverage Status Total Downloads

这是一个库,用于根据其自身定义验证XML文件与多个XSD模式。

它的工作方式是

  1. 接收一个有效的xml字符串作为要评估的内容
  2. 扫描文件中的每个schemaLocation
  3. 组成一个包含所有模式的模式
  4. 将XML与组成的文件进行验证

安装

使用composer,请运行

composer require eclipxe/xmlschemavalidator

基本用法

<?php
declare(strict_types=1);

use Eclipxe\XmlSchemaValidator\SchemaValidator;

$contents = file_get_contents('example.xml');
$validator = SchemaValidator::createFromString($contents);
if (! $validator->validate()) {
    echo 'Found error: ' . $validator->getLastError();
}

高级用法

<?php
declare(strict_types=1);

use Eclipxe\XmlSchemaValidator\SchemaValidator;
use Eclipxe\XmlSchemaValidator\Exceptions\ValidationFailException;

// create SchemaValidator using a DOMDocument
$document = new DOMDocument();
$document->load('example.xml');
$validator = new SchemaValidator($document);

// change schemas collection to override the schema location of a specific namespace
$schemas = $validator->buildSchemas();
$schemas->create('http://example.org/schemas/x1', './local-schemas/x1.xsd');

// validateWithSchemas does not return boolean, it throws an exception
try {
    $validator->validateWithSchemas($schemas);
} catch (ValidationFailException $ex) {
    echo 'Found error: ' . $ex->getMessage();
}

异常

此库创建了自己的特定异常,并且所有异常都实现了XmlSchemaValidatorException。有关更多信息,请参阅异常文档

当此库使用LibXML函数时,它会捕获错误并抛出自己的异常。

版本1.x已弃用

版本1.x不再开发。它存在一个关注的问题,同一个库试图解决两个不同的问题:验证XML文件和在本地上存储XSD文件的副本。版本2.x解决了这个问题,并使此库只有一个目的:验证XML文件与它的多个XSD文件,无论它们在哪里。

版本2.x已弃用

版本2和版本3之间的迁移更改

版本2.x与PHP 7兼容,并于2020年4月5日弃用。

已创建一个分支2.x,它可能可以通过composer require eclipxe/xmlschemavalidator:2.x-dev安装,但它将不会得到积极维护。您应尽快更改您的依赖项。

贡献

欢迎贡献!请阅读贡献指南,并别忘了查看待办事项变更日志文件。

版权和许可

eclipxe/XmlSchemaValidator库版权所有 © Carlos C Soto,并许可在MIT许可(MIT)下使用。请参阅许可以获取更多信息。