(PHP 4, PHP 5, PHP 7, PHP 8)
xml_set_default_handler — Establece el gestor XML por defecto
Establece el gestor por defecto del analizador XML parser.
parserEl analizador XML.
handler
Si null se pasa, el controlador se reinicia a su estado predeterminado.
Una cadena vacía también reiniciará el controlador, sin embargo esta funcionalidad está deprecada a partir de PHP 8.4.0.
Si handler es un callable ,
el callable se define como el controlador.
Si handler es una string ,
puede ser el nombre de un método de un objeto definido con
xml_set_object() .
Esta funcionalidad está deprecada a partir de PHP 8.4.0.
A partir de PHP 8.4.0, se verifica la validez del callable durante la configuración del controlador, y no en el momento de su llamada. Esto significa que xml_set_object() debe ser llamado antes de definir un método como cadena como devolución de llamada. Sin embargo, como este comportamiento también está deprecado a partir de PHP 8.4.0, se recomienda utilizar un callable adecuado para el método.
La firma del gestor debe ser:
parserEl analizador XML que llama al controlador.
data
data contiene los caracteres en forma de string.
Puede ser una declaración XML, un tipo de documento, una entidad u otros datos para los cuales no se prevé ningún gestor.
Retorna siempre true .
| Versión | Descripción |
|---|---|
| 8.4.0 |
Pasar un valor no callable de tipo string a
handler ahora está obsoleto;
utilice un callable apropiado para los métodos, o null para reinicializar el gestor.
|
| 8.4.0 |
La validez de handler como callable
ahora se verifica al definir el gestor en lugar de verificarse al invocarlo.
|
| 8.0.0 |
parser ahora espera una instancia de XMLParser
; anteriormente, se esperaba un recurso xml de tipo resource válido.
|
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" ?>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.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.