#23631 [Opn->Bgs]: xml_set_character_data_handler function called multiple times on one element
| From: | derick@php.net | 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&b=2&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&b=2&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