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.
xml_set_default_handler
(PHP 4, PHP 5)
xml_set_default_handler — Affecte le gestionnaire XML par défaut
Description
Affecte le gestionnaire par défaut de l'analyseur XML
parser.
Liste de paramètres
-
parser -
Une référence à un analyseur XML à définir comme fonction d'analyse par défaut.
-
handler -
handlerest une chaîne qui contient le nom d'une fonction qui existe lorsque xml_parse() est appelé pour créerparser.La fonction
handlerdoit accepter deux paramètres :handler ( resource$parser, string$data)-
parser -
Le premier paramètre,
parser, est une référence sur l'analyseur XML qui appelle cette fonction. -
data -
Le second paramètre,
data, contient les caractères sous la forme d'une chaîne. Cela peut être une déclaration XML, un type de document, une entité ou d'autres données pour lesquelles aucun gestionnaire n'est prévu.
Si un gestionnaire reçoit une chaîne vide ou
FALSE, c'est qu'il est désactivé.Note: À la place d'un nom de fonction, un tableau contenant une référence d'objet et un nom de méthode peut aussi être utilisé.
-
Valeurs de retour
Cette fonction retourne TRUE en cas de
succès ou FALSE si une erreur survient.
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.
