Tuesday, October 7, 2025
HomeLanguagesPHP | xml_parser_create() Function

PHP | xml_parser_create() Function

The xml_parser_create() function is an inbuilt function in PHP which is used to create an XML parser.

Syntax: 

resource xml_parser_create( string $encoding )

Parameters: This function accepts single parameter $encoding which is optional. It specifies the character encoding:  

  • for input/output in PHP 4
  • only for output from PHP 5
  • for 5.0.0 and 5.0.1 default output charset is ISO-8859-1
  • from 5.0.2 default output charset is UTF-8

Return Value: This function returns the resource handler which is to be used by some other XML functions 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: 

HTML




<?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 the 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))
    );
}
 
// Free to 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. 

neveropen.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 2: 

PHP




<?php
 
// Creating an XML parser
$parser = xml_parser_create();
 
// Element handler function named "starting_handler"
// enables 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 the 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
$fp = fopen("neveropen.xml", "r");
 
// Reading xml file
while ($data = fread($fp, 4096)) {
  
    xml_parse($parser, $data, feof($fp)) 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($fp);
 
?>


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-create.php
 

RELATED ARTICLES

Most Popular

Dominic
32340 POSTS0 COMMENTS
Milvus
86 POSTS0 COMMENTS
Nango Kala
6708 POSTS0 COMMENTS
Nicole Veronica
11872 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11936 POSTS0 COMMENTS
Shaida Kate Naidoo
6829 POSTS0 COMMENTS
Ted Musemwa
7090 POSTS0 COMMENTS
Thapelo Manthata
6780 POSTS0 COMMENTS
Umr Jansen
6784 POSTS0 COMMENTS