"Leendert" <[EMAIL PROTECTED]> wrote in message [EMAIL PROTECTED]">news:[EMAIL PROTECTED]... > It appears that: > > xml_set_character_data_handler($parser, 'handleData'); > > calls handleData() 3 times per element. Does anyone know the reason behind > this? Sounds like that could be very inefficient. > >
FYI, this is the code I'm using: <?php class XMLSettingsParser { var $settingsFile; var $xmlData; var $parser; var $tempElementName; function XMLSettingsParser($settingsFile) { $this->SettingsFile = $settingsFile; $this->xmlData = implode('', file($settingsFile)); $this->parser = xml_parser_create(); xml_set_object($this->parser, &$this); xml_set_element_handler($this->parser, 'handleStartElement', 'handleEndElement'); xml_set_character_data_handler($this->parser, 'handleData'); xml_parse($this->parser, $this->xmlData); xml_parser_free($this->parser); } function handleStartElement($parser, $name, $attribs) { $this->tempElementName = $name; } function handleEndElement() {} function handleData($parser, $data) { //if(!defined($this->tempElementName)) define($this->tempElementName, $data); } } ?> It gives me 2 notices per element that the constant is already defined, while it shouldn't. When I do use the conditional if(!defined($this->tempElementName)) it works fine of course. But it should work in the first place. Note: you need error_reporting(E_NOTICE); on to see the error. -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php