PHP | xml_parser_free() Function

Last Updated : 18 Nov, 2022
Comments
Improve
Suggest changes
Like Article
Like
Report

Pre-requisite: XML Basics
The xml_parser_free() function is an inbuilt function in PHP which is used to free the XML parser.

Syntax:  

bool xml_parser_free( resource $parser )

Parameters: This function accepts single parameter $parser which is required. It specifies the reference of XML parser to free.
Return Value: This function returns True on success or False on failure.

Note:  

  • This function is available for PHP 4.0.0 and newer version.
  • These examples may not work on online IDE. So, try to run it on local server or php hosted servers.

gfg.xml file:  

XML
<?xml version="1.0" encoding="utf-8"?>
<user>
    <username>user123</username>
    <name>firstname lastname</name>
    <phone>+91-9876543210</phone>
    <detail>I am John Doe. Live in Kolkata, India.</detail>
</user>

Program 1: 

PHP
<?php

// Create an XML parser
$parser = xml_parser_create();
 
// Set the character handler function
// for the XML parser
xml_set_character_data_handler($parser, "char_print");
 
// Opening xml file
$filePointer = fopen("gfg.xml", "r");
 
// Reading xml data from file
while ($data = fread($filePointer, 4096)) {
 
    // Parsing XML data
    xml_parse($parser, $data, feof($filePointer)) or
    
        // Display error when parse error occurs
        die (sprintf("XML Error: %s at line %d",
        
        // Error string
        xml_error_string(xml_get_error_code($parser)),
        
        // Current line        
        xml_get_current_line_number($parser)));
}
    
// Freeing xml parser
xml_parser_free($parser);
    
fclose($filePointer);
 
// Character handler function for XML parser
function char_print($parser, $data) {
    echo $data;
}
 
?>

Output: 

user123 
firstname lastname 
+91-9876543210 
I am John Doe. Live in Kolkata, India. 


Program 2: 

PHP
<?php

// Creating an xml parser
$parser = xml_parser_create();

// Element handler function named "starting_handler"
// enables the custom manipulation for output
function starting_handler($parser, 
                $element_name, $element_attrs) {
    
    switch($element_name) {
        case "USER":
            echo "<u>USER DATA</u><br>";
            break;
        case "USERNAME":
            echo "Username: ";
            break;
        case "NAME":
            echo "Name: ";
            break;
        case "PHONE":
            echo "Phone no: ";
            break;
        case "DETAIL":
            echo "More about user: ";
    }
}

// Element handler function named "ending_handler"
function ending_handler($parser, $element_name) {
    echo "<br>";
}

// Character handler function named "char_handler"
function char_handler($parser, $data) {
    echo $data;
}

// Setting element handlers
xml_set_element_handler($parser, "starting_handler",
                                  "ending_handler");

// Setting character data handler
xml_set_character_data_handler($parser, "char_handler");

// Opening xml file
$filePointer = fopen("gfg.xml", "r");

// Reading xml file 
while( $data = fread($filePointer, 4096) ) {
 
    xml_parse($parser, $data, feof($filePointer)) or
    
        // Display error while xml parsing
        die (sprintf("XML Error: %s at line %d",
        
        // Error string
        xml_error_string(xml_get_error_code($parser)),
        
        // Error line number
        xml_get_current_line_number($parser)));
}

// Free to xml parser
xml_parser_free($parser);

// Closing file stream
fclose($filePointer);

?>

Output: 

USER DATA
Username: user123
Name: firstname lastname
Phone no: +91-9876543210
More about user: I am John Doe. Live in Kolkata, India.

Reference: https://www.php.net/manual/en/function.xml-parser-free.php
 


Next Article

Similar Reads