PHP Conference Nagoya 2025

xml_set_default_handler

(PHP 4, PHP 5, PHP 7, PHP 8)

xml_set_default_handlerConfigura el manejador predeterminado

Descripción

xml_set_default_handler(XMLParser $parser, callable $handler): bool

Configura la función del manejador predeterminado para el intérprete XML parser.

Parámetros

parser

Identificador del recurso del intérprete XML para el que se va a configurar la función del manejador predeterminado.

handler

handler es un string que contiene el nombre de una función que debe existir cuando xml_parse() es llamado por parser.

La función llamada mediante handler debe aceptar dos parámetros:

handler(XMLParser $parser, string $data)
parser
El primer parámetro, parser, hace referencia al intérprete XML que llama al manejador.
data
El segundo parámetro, data, contiene los datos de carateres. Esto puede ser la declaración XML, las declaraciones DOCTYPE, entidades u otros datos para los cuales no exista otro manejador.

Si la función del manejador se configura como una cadena vacia, o false, el manejador en cuestión se deshabilita.

Nota: En lugar del nombre de una función, se puede asignar un array que contenga la referencia a un objeto o el nombre de un método.

Valores devueltos

Devuelve true en caso de éxito o false en caso de error.

Historial de cambios

Versión Descripción
8.0.0 parser expects an XMLParser instance now; previously, a valid xml resource was expected.
add a note

User Contributed Notes 3 notes

up
0
jp dot amarok at email dot cz
7 months ago
For anyone who was also wondering what kind of events this function actually handles:

it's used in cases when an XML comment is found or an additional declaration like an xml-stylesheet. In such cases the data argument contains the whole string as it is, for example:

<!-- this is a comment -->
<?xml-stylesheet title="mystyle" type="text/xsl" href="style.xsl" ?>
up
-2
phillip
19 years ago
it seems to me that in PHP5 the function defined as default-handler (using xml_set_default_handler()) doesen't get passed the cdata anymore:

i.e.:
xml_set_element_handler($this->parser, 'parseSTART', 'parseEND');
xml_set_default_handler($this->parser, 'parseDEFAULT');
function parseSTART() { ... }
function parseEND() { ... }
function parseDEFAULT() { ... }

under PHP5, parseDEFAULT will NOT get passed any cdata, but unter PHP4 it will. at least that's my take on the strange stuff (not) happening after migrating to PHP5.

my solution was to add a xml_set_character_data_handler($parser, 'parseDEFAULT'). it worked for me.
up
-3
anoril at anoril dot com
18 years ago
I have the same issue using two installation of PHP5: on accepts to use the default handler while the other only uses the character_data one.

Maybe a configuration problem...

;) Nonor.
To Top