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 parserxml_set_character_data_handler($xml_parser, "char_print");// Opening xml file$file_pointer = fopen("gfg.xml", "r");// Reading xml data from filewhile($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 parserxml_parser_free($xml_parser);fclose($file_pointer); // Character handler function for XML parserfunction 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 outputfunction 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 handlersxml_set_element_handler($xml_parser, "starting_handler", "ending_handler");// Setting character data handlerxml_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 parserxml_parser_free($xml_parser);// Closing file streamfclose($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, zambiatek 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!



