#23631 [Opn->Bgs]: xml_set_character_data_handler function called multiple times on one element

From: Date: Thu, 15 May 2003 07:57:32 +0000
Subject: #23631 [Opn->Bgs]: xml_set_character_data_handler function called multiple times on one element
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-39692@lists.php.net to get a copy of this message
ID: 23631 Updated by: derick@php.net Reported By: mrowe at pointsystems dot com -Status: Open +Status: Bogus Bug Type: XML related Operating System: Win2k/RedHat Linux PHP Version: 4.3.1 New Comment: Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php Basics of parsing with SAX parsers, not a bug, and it's entirely correct (it's even wanted :). Previous Comments: ------------------------------------------------------------------------ [2003-05-14 16:11:08] mrowe at pointsystems dot com In the second paragraph, I should have stated: "When I parse some elements, the "character data handler" may get called multiple times for a single XML element." THANKS! ------------------------------------------------------------------------ [2003-05-14 16:08:50] mrowe at pointsystems dot com Hi there, This may be a documentation issue, or an undocumented "feature." When I parse some elements, the "character data handler" may get called multiple times. Example: // start code // $xml = '<URL>http://www.php.net?a=1&amp;b=2&amp;c=3</URL>'; echo "xml = " . $xml . "\n\n"; $xml_parser = xml_parser_create(); xml_set_element_handler($xml_parser, "startElement", "endElement"); xml_set_character_data_handler($xml_parser, "characterData"); function startElement($parser, $tag, $attributes){ } function endElement($parser, $tag){ } function characterData($parser, $cdata){ if (!trim($cdata)) return; echo "data = " . $cdata . "\n"; } if (!xml_parse($xml_parser, $xml, true)){ echo "not parsed"; } // end code // The results are: data = http://slashdot.org?a=1 data = & data = b=2 data = & data = c=3 I'm expecting: data = http://www.php.net?a=1&amp;b=2&amp;c=3 The online docs state "The second parameter, data, contains the character data as a string." However, in each case, "data" is only PART of the character data. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=23631&edit=1

« previous php.bugs (#39692) next »