PHP | XMLReader setParserProperty() Function

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>zambiatek</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 nodeswhile ($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



