"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

Reply via email to