PHP | Función xml_set_character_data_handler()

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
 

Publicación traducida automáticamente

Artículo escrito por gekcho y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *