Mailinglisten-Archive |
Hallo Gruppe, wir hoffen, ihr könnt uns weiterhelfen? Wir haben folgende Klasse: <?php class XMLNodeParser { // Deklaration der Variablen var $identifikator="XMLNodeParser"; var $momentanerKnoten=""; var $Trennzeichen='_x_'; var $Underscore='_'; var $xml_parser; // Benoetigte XML-Funktionen function WurzelElement ($parser, $name, $attrs) { $this->momentanerKnoten .= $this->Trennzeichen . $name; if (count ($attrs)>0) $this->tagdata = $attrs; } function BlattElement($parser, $name) { $curtag = $this->identifikator . eregi_replace($this->Trennzeichen,$this->Underscore,$this->momentanerKnoten); if(!is_array($this->tagdata)) $this->tagdata = trim($this->tagdata); if($this->tagdata) { if(is_array($GLOBALS["$curtag"])) { $GLOBALS["$curtag"][] = $this->tagdata; } else { $GLOBALS["$curtag"] = array(); $GLOBALS["$curtag"][] = $this->tagdata; } } else { // if there is no cdata, we still stor something // in the array, so we can count the levels later if(is_array($GLOBALS["$curtag"])) { $GLOBALS["$curtag"][] = ' '; } else { $GLOBALS["$curtag"] = array(); $GLOBALS["$curtag"][] = ' '; } } // Ueberschreiben des alten "curtag", da es nicht mehr gebraucht wird $curtag = strrev($this->momentanerKnoten); $curtag = substr($curtag,strpos($curtag,$this->Trennzeichen)+strlen($this->Trennzeichen)); $curtag = strrev($curtag); $this->momentanerKnoten = $curtag; $this->tagdata = ''; return TRUE; } function characterData($parser, $cdata) { $this->tagdata .= $cdata; } function characterData($parser, $cdata) { $this->tagdata .= $cdata; } // Aufrufen der Funktion XMLNodeParser nachdem class initialisiert wurde function XMLNodeParser($data,$identifikator='XMLNodeParser') { $this->identifikator = $identifikator; $this->xml_parser = xml_parser_create(); // Setzen der benötigten Optionen und des handlers xml_set_object($this->xml_parser,$this); xml_parser_set_option($this->xml_parser,XML_OPTION_CASE_FOLDING,0); xml_set_element_handler($this->xml_parser, "WurzelElement", "BlattElement"); xml_set_character_data_handler($this->xml_parser, "characterData"); if (!xml_parse($this->xml_parser, $data, TRUE)) { die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($this->xml_parser)), xml_get_current_line_number($this->xml_parser))); } xml_parser_free($this->xml_parser); } } // Beenden der class XMLNodeParser ?>
php::bar PHP Wiki - Listenarchive