Sunday, November 16, 2025
HomeLanguagesPHP | xml_set_character_data_handler() Function

PHP | xml_set_character_data_handler() Function

The xml_set_character_data_handler() function is an inbuilt function in PHP which is used to set the character data handler function for XML parser.

Syntax: 

bool xml_set_character_data_handler( resource $xml_parser, callable $data_handler )

Parameters: This function accepts two parameters as mentioned above and described below:  

  • $xml_parser: It is required parameter. It holds the reference of XML parser to set up character data handler.
  • $data_handler: It is required parameter. It is a string which contains the name of function. 
handler( resource $parser, string $data )

The handler function must have these two parameters: 

  • $xml_parser: It holds the reference of XML parser which is calling to handler.
  • $data: It holds the character data as a string.

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
$xml_parser = xml_parser_create();
  
// Set the character handler function for XML parser
xml_set_character_data_handler($xml_parser, "char_print");
 
// Opening xml file
$file_pointer = fopen("gfg.xml", "r");
 
// Reading xml data from file
while($data = fread($file_pointer, 4096)) {
     
    // Parsing XML data
    xml_parse($xml_parser, $data, feof($file_pointer)) or
     
    // Display error when parsing error occurs
    die (sprintf("XML Error: %s at line %d",
         
        // Error string
        xml_error_string(xml_get_error_code($xml_parser)),
         
        // Current line
        xml_get_current_line_number($xml_parser)));
}
 
// Free to xml parser
xml_parser_free($xml_parser);
 
fclose($file_pointer);
  
// Character handler function for XML parser
function char_print($xml_parser, $data_to_print) {
    echo $data_to_print;
}
  
?>


Output: 

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

Program 2:  

PHP




<?php
 
// Create an xml parser
$xml_parser = xml_parser_create();
 
// Element handler function named "starting_handler"
// enables custom manipulation for output
function starting_handler($xml_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($xml_parser, $element_name) {
    echo "<br>";
}
 
// Character handler function named "char_handler"
function char_handler($xml_parser, $data) {
    echo $data;
}
 
// Setting element handlers
xml_set_element_handler($xml_parser,
        "starting_handler", "ending_handler");
 
// Setting character data handler
xml_set_character_data_handler($xml_parser, "char_handler");
 
// Opening xml file
$file_pointer = fopen("gfg.xml", "r");
 
// Reading xml file
while ($data = fread($file_pointer, 4096)) {
    xml_parse($xml_parser, $data, feof($file_pointer)) or
     
    // Display error while xml parsing
    die (sprintf("XML Error: %s at line %d",
     
        // Error string
        xml_error_string(xml_get_error_code($xml_parser)),
         
        // Error line number
        xml_get_current_line_number($xml_parser)));
}
 
// Free to xml parser
xml_parser_free($xml_parser);
 
// Closing file stream
fclose($file_pointer);
 
?>


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-set-character-data-handler.php
 

Whether you’re preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape, neveropen Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we’ve already empowered, and we’re here to do the same for you. Don’t miss out – check it out now!
RELATED ARTICLES

Most Popular

Dominic
32402 POSTS0 COMMENTS
Milvus
95 POSTS0 COMMENTS
Nango Kala
6768 POSTS0 COMMENTS
Nicole Veronica
11919 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11990 POSTS0 COMMENTS
Shaida Kate Naidoo
6897 POSTS0 COMMENTS
Ted Musemwa
7149 POSTS0 COMMENTS
Thapelo Manthata
6850 POSTS0 COMMENTS
Umr Jansen
6841 POSTS0 COMMENTS