samuelp | J'ai voulu faire une classe de parsage de fichiers XML
Voici le code
Code :
- <?
- /**
- * @package System
- * @class XMLParser
- * @author samuelp
- * @date September 2003
- * @nota not yet tested and not completely implemented
- * @contributors
- */
-
- class XMLParser
- {
- var $xmlfile ;
- var $xml_parser ;
- function XMLParser()
- {
- $this->xml_parser = xml_parser_create();
- xml_parser_set_option($this->xml_parser, XML_OPTION_CASE_FOLDING, true);
- xml_set_element_handler($this->xml_parser, '$this->startElement', $this->endElement);
- xml_set_character_data_handler($this->xml_parser, $this->characterData);
- }
-
-
- function setFile($varFile)
- {
- if (file_exists($varFile))
- $this->xmlfile = $varFile ;
- else
- {
- echo "Cant open $varFile";
- $this->xmlfile = "";
- }
- }
- function startElement($parser, $name, $attrs)
- {
- // BEGINNING OF AN XML TAG. ATTRIBUTES ARE LOCATED IN THE ARRAY $attrs
- print_r($attrs);
- }
- function endElement($parser, $name)
- {
- // END OF AN XML TAG
- }
- function characterData($parser, $data)
- {
- // Data is the data contained between each XML Tag
- }
- function runParser()
- {
- if ($this->xmlfile=="" )
- {
- echo "No XML File Selected" ;
- }
- else
- {
- if (!($fp = fopen($this->xmlfile, "r" )))
- {
- die("Impossible de trouver le fichier XML" );
- }
- while ($data = fread($fp, 4096))
- {
- if (!xml_parse($this->xml_parser, $data, feof($fp)))
- {
- die(sprintf(" XML error : %s line %d",
- xml_error_string(xml_get_error_code($this->xml_parser)),
- xml_get_current_line_number($this->xml_parser)));
- }
- }
- }
- }
- function freeXMLParser()
- {
- xml_parser_free($this->xml_parser);
- }
- }
- ?>
|
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 |