SAX Parser objektorientiert einbinden

Alles, was PHP betrifft, kann hier besprochen werden.

SAX Parser objektorientiert einbinden

Postby Schmiditsch » 01. February 2005 11:07

hallo

ich habe zwei kleine grosse probleme. das eine ist, dass ich php immer mehr hasse weil man einfach nicht sauber programmieren kann.

das andere ist, dass ich es nicht schaffe die handler in eine klasse einzubinden:

xml_set_element_handler($this->parser, "startElement", "endElement");

funktioniert leider nicht.

ich habe es auch schon mit:

xml_set_element_handler($this->parser, "$this->startElement", "$this->endElement");

probiert aber alles fehlanzeige. kennt hier jemand die lösung. dann hätte ich zwei probleme weniger.

Code: Select all
class LangDef{
      var $language;
      var $du_sie;
      var $langdefArray = array();

      var $current_lang_id;
      var $current_language;
      var $current_data;
      var $parser;
      
      function LangDef($language, $du_sie){
         $this->language = strtolower($language);
         $this->du_sie = strtolower($du_sie);
         $this->parser = xml_parser_create();
         xml_set_element_handler($this->parser, "startElement", "endElement");
         xml_set_character_data_handler($this->parser, "characterData");
         $data = xml_parse($this->parser,file_get_contents("shared/xml/langdef.xml",1));
         if(!$data) {
            die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($this->parser)), xml_get_current_line_number($this->parser)));
         }
      }
      
      // *** Start Parserfunktionen      
         
      function startElement($parser, $elementName, $attributes){
         if($elementName == "SATZ"){
            $this->current_lang_id = $attributes['NR'];
         }
         if($elementName == "DE"){
            $this->current_language = "de";
         }
         if($elementName == "FR"){
            $this->current_language = "fr";
         }
         if($elementName == "IT"){
            $this->current_language = "it";
         }
         if($elementName == "EN"){
            $this->current_language = "en";
         }
         if($elementName == "SK"){
            $this->current_language = "sk";
         }
      }

      function characterData($parser, $data){
         $this->current_data = $data;
      }

      function endElement($parser, $elementName){
         if($elementName == "DU"){
            echo $this->current_lang_id."_".$this->current_language."_du    ".$this->current_data."<br>";
         }
         if($elementName == "SIE"){
            echo $this->current_lang_id."_".$this->current_language."_sie    ".$this->current_data."<br>";
         }
      }
      
      // *** Ende Parserfunktionen
      

      function getDef($nr){
         $key = $nr."_".$this->language."_".$this->du_sie;
         return $this->langdefArray[$key];
      }

      function getUserLanguage(){
         return $this->language;
      }

      function getDuSie(){
         return $this->du_sie;
      }


   }


Gruss, Schmiditsch
Schmiditsch
 
Posts: 12
Joined: 31. December 2004 09:57

Return to PHP

Who is online

Users browsing this forum: No registered users and 30 guests