當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。