Utiliser xml_set_element_handler() avec des méthodes d'une classe

Utiliser xml_set_element_handler() avec des méthodes d'une classe - PHP - Programmation

Marsh Posté le 05-10-2006 à 20:19:35    

Bonjour,
 
j'ai un pb lors de l'utilisation de xml_set_element_handler(). Cette fonction prend comme 2 derniers paramètres des noms de fonctions (sous la forme de chaîne de caractères)
http://fr.php.net/manual/fr/functi [...] andler.php

Citation :

Description
bool xml_set_element_handler ( resource parser, callback start_element_handler, callback end_element_handler )
 
xml_set_element_handler() affecte les gestionnaires de début et de fin de l'analyseur XML parser. start_element_handler et end_element_handler sont des chaînes qui contiennent les noms de fonctions qui existent lorsque xml_parse() est appelé pour créer parser.
 
La fonction start_element_handler doit accepter trois paramètres : start_element_handler ( resource parser, string name, array attribs )


 
Or, j'utilise xml_set_element_handler() dans une méthode static d'une classe static.
 

Code :
  1. class Tools {
  2. ...
  3.   public static function Importation() {
  4.    ...
  5.    $xml = xml_parser_create();
  6.    xml_set_element_handler($xml, "openTag", "closeTag" );
  7.    ...
  8.   }
  9.    public static function openTag($parser, $name, $attr) {
  10.    ...
  11.    }
  12.    public static function closeTag($parser, $name) {
  13.    ...
  14.    }
  15.    ...
  16. }


 
si openTag() et closeTag() sont déclarées à l'extérieure de ma classe, xml_set_element_handler() accepte de fonctionner. Mais je n'ai pas trouvé comment faire pour que xml_set_element_handler() fonctionne avec 2 fonctions static de la classe. J'ai essayé xml_set_element_handler($xml, "Tools::openTag", "Tools::closeTag" ); mais ça ne marche pas :(
 
Est-ce-que vous savez si ce que je veux faire est possible? Merci par avance de votre aide :jap:

Reply

Marsh Posté le 05-10-2006 à 20:19:35   

Reply

Marsh Posté le 06-10-2006 à 16:13:14    

Personne ne peut m'aider, svp? Merci.

Reply

Marsh Posté le 09-10-2006 à 09:49:31    

allé, un dernier up et après, je laisse tomber...

Reply

Marsh Posté le 09-10-2006 à 10:24:57    

t'as essayé $this->openTag ?

Reply

Marsh Posté le 09-10-2006 à 12:50:01    

anapajari a écrit :

t'as essayé $this->openTag ?


 
ma classe est static, donc $this n'a pas de sens dans ce contexte...

Reply

Marsh Posté le 09-10-2006 à 12:55:32    

rufo a écrit :

ma classe est static, donc $this n'a pas de sens dans ce contexte...


t'as pas tort :D j'ai lu un peu vite

Reply

Marsh Posté le 09-10-2006 à 15:19:05    

self::openTag et self::closeTag ?

Message cité 1 fois
Message édité par Djebel1 le 09-10-2006 à 15:19:13
Reply

Marsh Posté le 09-10-2006 à 16:44:09    

Djebel1 a écrit :

self::openTag et self::closeTag ?


 
ça, par contre, je ne coirs pas avoir testé. Merci.

Reply

Marsh Posté le 19-05-2009 à 14:47:04    

bonjour, ce post est vieux mais non validé donc je propose une solution :
 
        $xml_parser = xml_parser_create();
 xml_set_object($xml_parser, &$this);
 xml_set_element_handler($xml_parser, "startElement", "endElement" );
 xml_set_character_data_handler($xml_parser, "characterData" );
 
 xml_parse($xml_parser, $xmlToParse, true);
 xml_parser_free($xml_parser);
 
avec  
 
        public function startElement($parser, $name, $attrs){
        public function characterData($parser, $data){
        public function endElement($parser, $name){
 
dans la classe.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed