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 interger 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
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    <?xml version="1.0" encoding="utf-8"?>
    <div>
        <h1> Sample XML </h1>
    </div>

    chevron_right

    
    

  • index.php
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    <?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.';
    }
    ?>

    chevron_right

    
    

  • Output:
    Property is set.

Program 2:

  • data.xml
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    <?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>

    chevron_right

    
    

  • index.php
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    <?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>";
            }
        }
    }
    ?>

    chevron_right

    
    

  • 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




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.


Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.