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 >GeeksforGeeks</ 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