La función XMLReader::isValid() es una función incorporada en PHP que se utiliza para verificar si el documento que se analiza es válido o no. Un XML es válido si está escrito siguiendo una DTD (Definición de tipo de documento) que define todos los elementos permitidos y la estructura de los elementos.
Sintaxis:
bool XMLReader::isValid( void )
Parámetros: Esta función no acepta ningún parámetro.
Valor de retorno: esta función devuelve VERDADERO en caso de éxito o FALSO en caso de error.
Los programas dados a continuación ilustran la función XMLReader::isValid() en PHP:
Programa 1:
Nombre de archivo: data.xml
<?xml version="1.0"?> <!-- DTD rules to be followed by XML--> <!DOCTYPE html [ <!ELEMENT html (h1, p, heading, body)> <!ELEMENT h1 (#PCDATA)> <!ELEMENT p (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> <!-- XML starts from here --> <html> <h1>Hi</h1> <p>World</p> <heading>GeeksforGeeks</heading> <body>Web Portal for Geeks</body> </html>
Nombre de archivo: index.php
<?php // Create a new XMLReader instance $XMLReader = new XMLReader(); // Open the XML file $XMLReader->open('data.xml'); // Enable the Parser Property $XMLReader->setParserProperty( XMLReader::VALIDATE, true); // Iterate through the XML nodes while ($XMLReader->read()) { if ($XMLReader->nodeType == XMLREADER::ELEMENT) { // Check if XML is valid or not $isValid = $XMLReader->isValid(); if ($isValid) { echo "YES ! this node is validated<br>"; } } } ?>
Producción:
YES ! this node is validated YES ! this node is validated YES ! this node is validated YES ! this node is validated YES ! this node is validated
Programa 2:
Nombre de archivo: data.xml
<?xml version="1.0"?> <!-- DTD rules to be followed by XML--> <!DOCTYPE html [ <!ELEMENT html (heading, body)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> <!-- XML starts from here --> <html> <body>Web Portal for Geeks</body> </html>
Nombre de archivo: index.php
<?php // Create a new XMLReader instance $XMLReader = new XMLReader(); // Open the XML file $XMLReader->open('data.xml'); // Enable the Parser Property $XMLReader->setParserProperty( XMLReader::VALIDATE, true); // Iterate through the XML nodes while ($XMLReader->read()) { if ($XMLReader->nodeType == XMLREADER::ELEMENT) { // Check if XML is valid or not $isValid = $XMLReader->isValid(); if (!$isValid) { echo "No ! this node is not validated<br>"; } } } ?>
Producción:
No ! this node is not validated No ! this node is not validated
Referencia: https://www.php.net/manual/en/xmlreader.isvalid.php