La función xml_set_character_data_handler() es una función incorporada en PHP que se utiliza para configurar la función del controlador de datos de caracteres para el analizador XML.
Sintaxis:
bool xml_set_character_data_handler( resource $xml_parser, callable $data_handler )
Parámetros: esta función acepta dos parámetros, como se mencionó anteriormente y se describe a continuación:
- $xml_parser: Es un parámetro obligatorio. Contiene la referencia del analizador XML para configurar el controlador de datos de caracteres.
- $data_handler: Es un parámetro requerido. Es una string que contiene el nombre de la función.
handler( resource $parser, string $data )
La función del controlador debe tener estos dos parámetros:
- $xml_parser: contiene la referencia del analizador XML que llama al controlador.
- $datos: contiene los datos de los caracteres como una string.
Valor devuelto: esta función devuelve verdadero en caso de éxito o falso en caso de error.
Nota:
- Esta función está disponible para PHP 4.0.0 y versiones posteriores.
- Es posible que estos ejemplos no funcionen en IDE en línea. Por lo tanto, intente ejecutarlo en un servidor local o en servidores alojados en php.
Archivo gfg.xml:
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>
Programa 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; } ?>
Producción:
user123 firstname lastname +91-9876543210 I am John Doe. Live in Kolkata, India.
Programa 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); ?>
Producción:
USER DATA Username: user123 Name: firstname lastname Phone no: +91-9876543210 More about user: I am John Doe. Live in Kolkata, India.
Referencia: https://www.php.net/manual/en/function.xml-set-character-data-handler.php