#37440 [Opn->Fbk]: Problem assigning multiple objects with XML parser within them to one variable

From: Date: Sat, 22 Jul 2006 13:00:06 +0000
Subject: #37440 [Opn->Fbk]: Problem assigning multiple objects with XML parser within them to one variable
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-99747@lists.php.net to get a copy of this message
ID: 37440 Updated by: sniper@php.net Reported By: kenashkov at gmail dot com -Status: Open +Status: Feedback Bug Type: XML related Operating System: Fedora Core 4 PHP Version: 4.4.2 New Comment: Thank you for this bug report. To properly diagnose the problem, we need a short but complete example script to be able to reproduce this bug ourselves. A proper reproducing script starts with <?php and ends with ?>, is max. 10-20 lines long and does not require any external resources such as databases, etc. If possible, make the script source available online and provide an URL to it here. Try to avoid embedding huge scripts into the report. Previous Comments: ------------------------------------------------------------------------ [2006-05-14 20:33:05] kenashkov at gmail dot com No - it is not. I have a full working example class - the same result. The inexpected here is that the parser can not call the registered methods. Obviuosly I do not expect to work - the source is scaled down to the bare minimum that reproduces the case. ------------------------------------------------------------------------ [2006-05-14 20:29:16] tony2001@php.net This is expected since your handlers do not return anything. ------------------------------------------------------------------------ [2006-05-14 20:11:51] kenashkov at gmail dot com Description: ------------ When assigning multiple times to ane variable an object which contains a XML parser, there is a problem when the xml_parse is called. The parser can not call the registered handlers. The problem can be avoided if the variable is unset before the second call, or using $doc1 =& new xml_doc() for every assignment. Reproduce code: --------------- <? class xml_doc { function xml_doc() { $this->res = xml_parser_create_ns(); xml_set_object($this->res,$this); xml_set_element_handler($this->res,'start_element','end_element'); } function load_string($string) { xml_parse($this->res,$string); } function start_element() { } function end_element() { } } $str = '<?xml version="1" encoding="UTF-8" standalone="yes"?><root></root>'; $doc1 = new xml_doc(); $doc1->load_string($str); //unset($doc1);//this solves the problem //or using $doc1 =& new xml_doc(); in every assignment $doc1 = new xml_doc(); $doc1->load_string($str); ?> Expected result: ---------------- Nothing really... it is too simple to do real parsing. Actual result: -------------- Warning: xml_parse() [function.xml-parse.html]: Unable to call handler start_element() in file.php on line 13 Warning: xml_parse() [function.xml-parse.html]: Unable to call handler end_element() in file.php on line 13 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=37440&edit=1

« previous php.bugs (#99747) next »