PHP | Función XMLReader setSchema()

La función XMLReader::setSchema() es una función incorporada en PHP que se usa para validar el documento usando un esquema XSD. Este esquema XSD no es más que un archivo que define la regla para la estructura XML y debe tener la forma de un archivo .xsd.

Sintaxis:

bool XMLReader::setSchema( string $filename )

Parámetros: esta función acepta un solo parámetro $filename que contiene el nombre del archivo XSD.

Valor de retorno: esta función devuelve VERDADERO en caso de éxito o FALSO en caso de error.

Excepciones: esta función arroja E_WARNING si la extensión libxml se compiló sin soporte de esquema.

Los siguientes ejemplos ilustran la función XMLReader::setSchema() en PHP:

Ejemplo 1:

  • data.xml (El archivo XML a validar)

    <?xml version="1.0"?>
    <student>
        <name>Rahul</name>
        <rollno>1726262</rollno>
    </student>
  • rule.xsd (Las reglas a seguir por el archivo XML)

    <?xml version="1.0"?>
    <xs:schema xmlns:xs=
    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 (El script PHP para ejecutar la validación)

    <?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>";
            }
      
        }
    }
    ?>
  • Producción:
    This document is valid!
    This document is valid!
    This document is valid!

Ejemplo 2:

  • datos.xml

    <?xml version="1.0"?>
    <div>
        <phoneNo>This should not be text</phoneNo>
    </div>
  • regla.xsd

    <?xml version="1.0"?>
    <xs:schema xmlns:xs=
    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>
  • índice.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>";
            }
      
        }
    }
    ?>
  • Producción:
    This document is not valid!
    This document is not valid!

Referencia: https://www.php.net/manual/en/xmlreader.setschema.php

Publicación traducida automáticamente

Artículo escrito por gurrrung y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *