当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


PHP XMLReader setSchema()用法及代码示例


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




相关用法


注:本文由纯净天空筛选整理自gurrrung大神的英文原创作品 PHP | XMLReader setSchema() Function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。