PHP+Classes+utilisation du parser XML : probleme avec les handlers

PHP+Classes+utilisation du parser XML : probleme avec les handlers - PHP - Programmation

Marsh Posté le 10-09-2003 à 19:17:06    

J'ai voulu faire une classe de parsage de fichiers XML
 
Voici le code

Code :
  1. <?
  2. /**
  3.   * @package System
  4.   * @class XMLParser
  5.   * @author samuelp
  6.   * @date September 2003
  7.   * @nota not yet tested and not completely implemented
  8.   * @contributors  
  9.   */
  10.  
  11.   class XMLParser
  12.   {
  13.      var $xmlfile ;
  14.     var $xml_parser ;
  15.     function XMLParser()
  16.     {
  17.       $this->xml_parser = xml_parser_create();
  18.       xml_parser_set_option($this->xml_parser, XML_OPTION_CASE_FOLDING, true);
  19.  xml_set_element_handler($this->xml_parser, '$this->startElement', $this->endElement);
  20.  xml_set_character_data_handler($this->xml_parser, $this->characterData);
  21.     }
  22.    
  23.    
  24.   function setFile($varFile)
  25.   {
  26.      if (file_exists($varFile))
  27.       $this->xmlfile = $varFile ;
  28.      else
  29.      {
  30.       echo "Cant open $varFile";
  31.       $this->xmlfile = "";
  32.   }
  33.   }
  34.  function startElement($parser, $name, $attrs)
  35.  {
  36.   // BEGINNING OF AN XML TAG. ATTRIBUTES ARE LOCATED IN THE ARRAY $attrs
  37.  print_r($attrs);
  38. }
  39.  function endElement($parser, $name)
  40.  {
  41.     // END OF AN XML TAG
  42. }
  43. function characterData($parser, $data)
  44. {
  45.      // Data is the data contained between each XML Tag
  46. }
  47. function runParser()
  48. {
  49.  if ($this->xmlfile=="" )
  50.  {
  51.   echo "No XML File Selected" ;
  52.  }
  53.  else
  54.  {
  55.   if (!($fp = fopen($this->xmlfile, "r" )))
  56.   {
  57.       die("Impossible de trouver le fichier XML" );
  58.   }
  59.   while ($data = fread($fp, 4096))
  60.   {
  61.        if (!xml_parse($this->xml_parser, $data, feof($fp)))
  62.        {
  63.           die(sprintf(" XML error : %s line %d",
  64.              xml_error_string(xml_get_error_code($this->xml_parser)),
  65.              xml_get_current_line_number($this->xml_parser)));
  66.        }
  67.   }
  68.   }
  69. }
  70. function freeXMLParser()
  71. {
  72.  xml_parser_free($this->xml_parser);
  73. }
  74. }
  75.   ?>


 
Le probleme c'est que, quand j'appelle la methode runParser, il me chie dans la colle a cause des handlers non reconnus.
 
J'ai essayé en passant simplement le nom des methodes, avec "$this->startElement", '$this->startElement' et $this->startElement
 
Mais toujours le meme probleme. Qqn aurait une idee ?
 
Merci

Reply

Marsh Posté le 10-09-2003 à 19:17:06   

Reply

Marsh Posté le 10-09-2003 à 20:08:43    

samuelp a écrit :

J'ai voulu faire une classe de parsage de fichiers XML
 
Le probleme c'est que, quand j'appelle la methode runParser, il me chie dans la colle a cause des handlers non reconnus.
 
J'ai essayé en passant simplement le nom des methodes, avec "$this->startElement", '$this->startElement' et $this->startElement
 
Mais toujours le meme probleme. Qqn aurait une idee ?
 
Merci


 
Quel est le problème exact ? Je ne comprends pas très bien.
 
Tu as peu etre tes raisons de construire ton propre parser, sinon il y a minixml, il est tres tres bien !
http://minixml.psychogenic.com/

Reply

Marsh Posté le 10-09-2003 à 20:25:18    

Yo c Spi a écrit :


 
Quel est le problème exact ? Je ne comprends pas très bien.
 
Tu as peu etre tes raisons de construire ton propre parser, sinon il y a minixml, il est tres tres bien !
http://minixml.psychogenic.com/


 
Pour le set_element_handler : si je met le ,om d'une fonction et une fonction externe, ça passe.
 
Par contre si je veux utiliser une methode de la classe XMLParser, je ne sais pas quoi mettre en parametre de set_element_handler pour lui dire que les elements handlers sont telle et telle methode

Reply

Sujets relatifs:

Leave a Replay

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