The XMLReader::setParserProperty() function is an inbuilt function in PHP which is used to set parser options. This function can be used to validate the document.
Syntax:
bool XMLReader::setParserProperty( int $property, bool $value )
Parameters: This function accepts two parameters as mentioned above and described below:
- $property: It specifies an integer corresponding to one of Parser Option constants as given below:
- XMLReader::LOADDTD (1) This will load DTD but does not validate.
- XMLReader::DEFAULTATTRS (2) This will load DTD and default attributes but does not validate.
- XMLReader::VALIDATE (3) This will load DTD and validate while parsing.
- XMLReader::SUBST_ENTITIES (4) This will substitute entities and expand references.
- $value: It specifies whether to enable or disable the property.
Return Value: This function returns TRUE on success or FALSE on failure.
Below examples illustrate the XMLReader::setParserProperty() function in PHP:
Example 1:
- data.xml
html
<? xml version = "1.0" encoding = "utf-8" ?> < div > < h1 > Sample XML </ h1 > </ div > |
- index.php
php
<?php // Create a new XMLReader instance $XMLReader = new XMLReader(); // Open the XML file with sample XML $XMLReader ->open( 'data.xml' ); // Set the Parser Property $XMLReader ->setParserProperty(XMLReader::VALIDATE, true); // Check if XMLReader::VALIDATE is set or not $isProperty = $XMLReader ->getParserProperty(XMLReader::VALIDATE); if ( $isProperty ) { echo 'Property is set.' ; } ?> |
- Output:
Property is set.
Program 2:
- data.xml
html
<? 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 >neveropen</ heading > < body >Web Portal for Geeks</ body > </ html > |
- index.php
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>" ; } } } ?> |
- Output:
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
Reference: https://www.php.net/manual/en/xmlreader.setparserproperty.php