XMLReader::setSchema()函数是PHP中的内置函数,用于使用XSD架构验证文档。该XSD架构不过是一个定义XML结构规则的文件,并且应采用.xsd文件的形式。
用法:
bool XMLReader::setSchema( string $filename )
参数:该函数接受单个参数$filename,该参数保存XSD文件名。
返回值:如果成功,此函数将返回TRUE,否则将返回FALSE。
异常:如果libxml扩展名是在没有模式支持的情况下编译的,则此函数将引发E_WARNING。
以下示例说明了PHP中的XMLReader::setSchema()函数:
范例1:
- data.xml(要验证的XML文件)
<?xml version="1.0"?> <student> <name>Rahul</name> <rollno>1726262</rollno> </student>
- 规则(XML文件要遵循的规则)
<?xml version="1.0"?> <xs:schema xmlns:xs= "http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="student"> <xs:complexType> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="rollno" type="xs:integer"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
- index.php(运行验证的PHP脚本)
<?php // Create a new XMLReader instance $XMLReader = new XMLReader(); // Open the XML file $XMLReader->open('data.xml'); // Load the rule $XMLReader->setSchema('rule.xsd'); // Iterate through the XML nodes while ($XMLReader->read()) { if ($XMLReader->nodeType == XMLREADER::ELEMENT) { // Check if XML follows the XSD rule if ($XMLReader->isValid()) { echo "This document is valid!<br>"; } } } ?>
- 输出:
This document is valid! This document is valid! This document is valid!
范例2:
- data.xml
<?xml version="1.0"?> <div> <phoneNo>This should not be text</phoneNo> </div>
- 规则
<?xml version="1.0"?> <xs:schema xmlns:xs= "http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="div"> <xs:complexType> <xs:sequence> <xs:element name="phoneNo" type="xs:integer"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
- index.php
<?php // Create a new XMLReader instance $XMLReader = new XMLReader(); // Open the XML file $XMLReader->open('data.xml'); // Load the rule $XMLReader->setSchema('rule.xsd'); // Iterate through the XML nodes while ($XMLReader->read()) { if ($XMLReader->nodeType == XMLREADER::ELEMENT) { // Check if XML follows the XSD rule if (!$XMLReader->isValid()) { echo "This document is not valid!<br>"; } } } ?>
- 输出:
This document is not valid! This document is not valid!
参考: https://www.php.net/manual/en/xmlreader.setschema.php
相关用法
- PHP XMLReader XML()用法及代码示例
- PHP XMLReader close()用法及代码示例
- PHP XMLReader getAttributeNs()用法及代码示例
- PHP XMLReader open()用法及代码示例
- PHP XMLReader getParserProperty()用法及代码示例
- PHP XMLReader moveToFirstAttribute()用法及代码示例
- PHP XMLReader moveToNextAttribute()用法及代码示例
- PHP XMLReader readInnerXml()用法及代码示例
- PHP XMLReader readOuterXml()用法及代码示例
- PHP XMLReader readString()用法及代码示例
- PHP XMLReader setRelaxNGSchema()用法及代码示例
- PHP XMLReader setParserProperty()用法及代码示例
- PHP XMLReader setRelaxNGSchemaSource()用法及代码示例
注:本文由纯净天空筛选整理自gurrrung大神的英文原创作品 PHP | XMLReader setSchema() Function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。