eclipxe / xmlschemavalidator
用于XML模式验证的PHP库
v3.0.4
2024-03-09 01:15 UTC
Requires
- php: >=7.3
- ext-dom: *
- ext-libxml: *
Requires (Dev)
- phpunit/phpunit: ^9.5.5
README
这是一个库,用于根据其自身定义验证XML文件与多个XSD模式。
它的工作方式是
- 接收一个有效的xml字符串作为要评估的内容
- 扫描文件中的每个schemaLocation
- 组成一个包含所有模式的模式
- 将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.x与PHP 7兼容,并于2020年4月5日弃用。
已创建一个分支2.x
,它可能可以通过composer require eclipxe/xmlschemavalidator:2.x-dev
安装,但它将不会得到积极维护。您应尽快更改您的依赖项。
贡献
欢迎贡献!请阅读贡献指南,并别忘了查看待办事项和变更日志文件。
版权和许可
eclipxe/XmlSchemaValidator
库版权所有 © Carlos C Soto,并许可在MIT许可(MIT)下使用。请参阅许可以获取更多信息。