Saltar al contenido

xml_set_character_data_handler()

La función xml_set_character_data_handler() es una función integrada de PHP que establece una función definida por el usuario como controlador para los datos de caracteres en un analizador XML. Pertenece a la extensión heredada xml (basada en el analizador Expat) y se utiliza para configurar una función personalizada que gestione los datos de caracteres durante el análisis de XML basado en flujos.

Esta función es útil cuando necesitas manipular los datos de caracteres durante el análisis, por ejemplo, para recortar espacios en blanco o realizar otras transformaciones en el texto extraído.

Sintaxis

php
xml_set_character_data_handler($parser, $handler)

Donde $parser es el recurso del analizador XML, y $handler es el nombre de la función definida por el usuario que gestionará los datos de caracteres. Ten en cuenta que la función controladora recibirá tres argumentos: $parser, $data, y $length.

Ejemplos de uso

Veamos un ejemplo práctico del uso de xml_set_character_data_handler() en PHP.

Ejemplo: Configuración de una función controladora de datos de caracteres

Supongamos que deseas analizar una cadena XML utilizando la extensión heredada xml. Puedes usar xml_parser_create() para crear un nuevo analizador, configurar un controlador de datos de caracteres mediante xml_set_character_data_handler() y luego analizar los datos:

Configuración de una función controladora de datos de caracteres en PHP

php
function handle_character_data($parser, $data, $length) {
    // Trim whitespace and output the character data
    echo trim($data);
}

$xml_parser = xml_parser_create();
xml_set_character_data_handler($xml_parser, "handle_character_data");

$xml_data = '<root><item>Hello World</item></root>';
xml_parse($xml_parser, $xml_data, true);

xml_parser_free($xml_parser);

Este código crea un nuevo analizador XML mediante xml_parser_create(). Luego configura una función personalizada handle_character_data() para gestionar los datos de caracteres en el XML. La función recibe el recurso del analizador, la cadena de datos de caracteres y la longitud del fragmento de datos. Finalmente, xml_parse() procesa el XML y xml_parser_free() libera el recurso del analizador.

Conclusión

En este artículo, hemos analizado la función xml_set_character_data_handler() de PHP y cómo establece una devolución de llamada para los datos de caracteres en la extensión heredada xml basada en Expat. Hemos cubierto su sintaxis y proporcionado un ejemplo completo de análisis. Ten en cuenta que se trata de una API heredada; para nuevos proyectos, considera utilizar alternativas modernas como DOMDocument o SimpleXML. Al trabajar con la extensión xml, esta función te permite manipular datos de caracteres, recortar espacios en blanco o aplicar transformaciones durante el análisis basado en flujos.

Práctica

¿Qué hace la función 'xml_set_character_data_handler()' en PHP?

¿Te resulta útil?

Vista previa dual-run — compárala con las rutas Symfony en producción.