phpbar.de logo

Mailinglisten-Archive

[php] PHP: Warum liefert das Programm nicht das gewünschte?

[php] PHP: Warum liefert das Programm nicht das gewünschte?

Öznur Anlas anlas_(at)_informatik.uni-muenchen.de
Wed, 22 Nov 2000 18:02:19 +0100


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