Cardinal from IRC answered my question. It turns out that when you indent your childs with tabs, it sees those tabs as cdata of the root element. I had the following XML file: <settings> <dbname>sampleDBName</dbname> <dbuser>sampleUser</dbuser> <dbhost>localhost</dbhost> </settings>
The tabs in front of the child elements were treated as CDATA of the <settings> root node. "Leendert" <[EMAIL PROTECTED]> wrote in message [EMAIL PROTECTED]">news:[EMAIL PROTECTED]... > "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