xml_set_default_handler

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

xml_set_default_handlerConfigura manipulador padrão

Descrição

xml_set_default_handler(XMLParser $parser, callable|string|null $handler): true

Define a função do manipulador padrão para o analisador XML parser.

Parâmetros

parser

O analisador XML.

handler

Se null for passado, o manipulador é redefinido para seu estado padrão.

Aviso

Uma string vazia também redefine o manipulador, entretanto isto foi descontinuado a partir do PHP 8.4.0.

Se handler for um callable, o callable será definido como o manipulador.

Se handler for uma string, ela pode ser o nome de um método de um objeto definido com xml_set_object().

Aviso

Isto foi descontinuado a partir do PHP 8.4.0.

Aviso

A partir do PHP 8.4.0, a função de retorno é verificada quanto à validade ao configurar o manipulador, e não quando é chamada. Isto significa que xml_set_object() precisa ser chamada antes de configurar uma string de método como a função de retorno. Entretando, como este comportamento também foi descontinuado a partir do PHP 8.4.0, usar um callable adequado para o método é recomendado.

A assinatura do manipulador deve ser:

handler(XMLParser $parser, string $data): void
parser
O analisador XML que chama o manipulador.
data
data contém os dados do caractere. Pode ser a declaração XML, declaração de tipo de documento, entidades ou outros dados para os quais não existe outro manipulador.

Valor Retornado

Sempre retorna true.

Registro de Alterações

Versão Descrição
8.4.0 Passar uma string não-callable no parâmetro handler foi descontinuado, use um chamável apropriado para métodos, ou null para redefinir o manipulador.
8.4.0 A validade do manipulador handler como um tipo callable agora é verificada ao configurar o manipulador ao invés de verificar na chamada.
8.0.0 O parâmetro parser agora espera uma instância de XMLParser; anteriormente, um resource xml válido era esperado.
adicione uma nota

Notas Enviadas por Usuários (em inglês) 3 notes

up
0
jp dot amarok at email dot cz
8 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