elements = array(); } function set($name, $value) { $this->elements[$name] = $value; } function get($name) { if (array_key_exists($name, $this->elements)) return $this->elements[$name]; else return PEAR::raiseError("Element $name no found"); } function toString() { foreach ($this->elements as $key=>$value) printf("%s :: %s
\n", $key, $value); } } // end of class Talk class TalkParser { var $parser; var $ltag; var $lcontent; var $talk; function TalkParser() { $this->parser = xml_parser_create(); xml_set_object($this->parser, $this); xml_set_element_handler($this->parser, 'start', 'end'); xml_set_character_data_handler($this->parser, 'cdata'); $this->ltag = $this->lcontent = ''; } function parse($xml) { xml_parse($this->parser, $xml); } function start($parser, $name, $attrs) { if (strtolower($name) == 'talk') { $this->talk = new Talk(); } else { $this->ltag = trim($name); } } function end($parser, $name) { if ($this->ltag != '') { $this->talk->set($name, $this->lcontent); $this->ltag = $this->lcontent = ''; } } function cdata($parser, $data) { $this->lcontent = trim($data); } function getTalk() { return $this->talk; } } // end of class TalkParser $xml_file = 'presentations/slides/sdphp/data/sdphp_talk.xml'; $xmldoc = implode('', file($xml_file)); $parser = new TalkParser(); $parser->parse($xmldoc); $talk = $parser->getTalk(); $talk->toString(); ?>