[PHP-DEV] PHP 4.0 Bug #7893: Parser cannot return from method in object called by xml_parse From: marek.berkan <email protected>
Date: 11/20/00

From: marek.berkan <email protected>
Operating system: Linux Debian
PHP version: 4.0.2
PHP Bug Type: *XML functions
Bug description: Parser cannot return from method in object called by xml_parse

I have an object that implement XML parser. One of its' method is called when parser found start tag. If I use in this method functions who operating on associative array (i.e. each, next or current) that PHP engine run to end of this method and stopping. If I don't use flush() function in script then no content is sending to client. So if I use flush function then content generated before is sending.

There is some example:

class XMLParser {
var $parser;
var $depth;
function XMLParser () {
        $depth = array();
        $this->parser = xml_parser_create();
        xml_set_object($this->parser,$this);
        xml_set_element_handler($this->parser,"open_tag","close_tag");
        xml_set_character_data_handler($this->parser,"cdata");
}
function open_tag($parser, $tag, $attrs) {
        echo "Before";
        flush();
        $atrybuty = array();
        $atrybuty["klucz1"] = "wartosc1";
        $atrybuty["klucz2"] = "wartosc2";
        reset($atrybuty);
        while (list($klucz, $wartosc) = each ($atrybuty)) {
                echo $klucz." => ".$wartosc.", ";
        }
        echo "After";
        flush();
}
function close_tag($parser, $tag) {
...
}
function cdata($parser, $cdata) {
...
}
function parseFile($data) {
        xml_parse($this->parser,$data);
}
} // end of XMLParser object

$test = new XMLParser(); // create object
$test->parseFile('<A ID="hallo">PHP</A>'); // start parser

-- 
Edit Bug report at: http://bugs.php.net/?id=7893&edit=1

-- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: php-dev-unsubscribe <email protected> For additional commands, e-mail: php-dev-help <email protected> To contact the list administrators, e-mail: php-list-admin <email protected>