PHP Function Reference

PHP xml_parser_free() Function



The PHP xml_parser_free() function frees the given XML parser.

Note: In addition to calling xml_parser_free() when the parsing is finished, prior to PHP 8.0.0, it was necessary to also explicitly unset the reference to parser to avoid memory leaks, if the parser resource is referenced from an object, and this object references that parser resource.

Syntax

xml_parser_free(parser)

Parameters

parser Required. Specify a reference to the XML parser to free.

Return Value

Returns true on success or false on failure.

Example:

Lets assume that we have a file called test.xml. This file contains following content:

<?xml version="1.0" encoding="UTF-8"?>
<userlist>
  <user>
    <username>John123</username>
    <name>John Smith</name>
    <phone>+1-8054098000</phone>
    <address>Brooklyn, New York, USA</address>
  </user>
</userlist>  

In the example below, an XML parser is created. Then the XML file is opened to parse its data using character handler function char_print. After parsing the document, the parser is freed using xml_parser_free() function.

<?php
//create an XML parser
$parser=xml_parser_create();

//character handler function for XML parser
function char_print($parser, $data) {
  echo $data;
}

//set the character handler function for XML parser
xml_set_character_data_handler($parser,"char_print");

//opening xml file
$fp = fopen("test.xml", "r");

while($data = fread($fp,4096)) {
  //parsing XML data
  xml_parse($parser,$data,feof($fp)) or

    //displaying 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)));
}

//free XML parser
xml_parser_free($parser);

fclose($fp);
?>

The output of the above code will be:

John123 John Smith +1-8054098000 Brooklyn, New York, USA

Example:

Consider one more example where the XML document is parsed using character handler function and element handler functions. After parsing the document, the parser is freed using xml_parser_free() function.

<?php
//create an XML parser
$parser=xml_parser_create();

//element handler function named "start_handler"
//enables customized output
function start_handler($parser, $element, $attribs) {     
  switch($element) {
    case "USERNAME":
      echo "<b>User Name : "; 
      break;
    case "NAME":
      echo "Name : ";         
      break;
    case "PHONE":
      echo "Phone : ";        
      break;
    case "ADDRESS":
      echo "Address : ";      
      break;
  }
}
 
//element handler function "end_handler"
function end_handler($parser, $element) {
  if($element == "USERNAME") 
    echo "</b><br>";
  else
    echo "<br>";
}
 
// Setting element handlers
xml_set_element_handler($parser, "start_handler", 
                        "end_handler");

//character handler function for XML parser
function char_print($parser, $data) {
  echo $data;
}

//set the character handler function for XML parser
xml_set_character_data_handler($parser,"char_print");

//opening xml file
$fp = fopen("test.xml", "r");

while($data = fread($fp,4096)) {
  //parsing XML data
  xml_parse($parser,$data,feof($fp)) or

    //displaying 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)));
}

//free XML parser
xml_parser_free($parser);

fclose($fp);
?>

The output of the above code will be:

User Name : John123
Name : John Smith
Phone : +1-8054098000
Address : Brooklyn, New York, USA

❮ PHP XML Parser Reference