saxxml и php5

S
На сайте с 13.07.2007
Offline
56
425


class rss_parser
{
private $news;
private $currentNews;
private $index;
private $file_path;
private $parser;

function parse_rss()
{
$this->parser = xml_parser_create('');

xml_set_element_handler($this->parser, 'feed_start_element', 'feed_end_element');
xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, true);

$xml = file_get_contents($this->file_path);

xml_parse($this->parser, $xml, true);

xml_parser_free($this->parser);
}

function feed_start_element($p, $name, $attrs)
{
switch($name)
{
case 'CHANEL':
$this->news = array();
break;
case 'ITEM':
$this->currentNews = array();
in_array('date', array_keys($attrs));
break;
default:
$this->index = $name;
break;
}
}

function feed_end_element($p, $name)
{
if ((is_array($this->currentNews)) && ($name=='ITEM'))
{
$this->news[] = $this->currentNews;
$this->currentNews = null;
}

$this->index = null;
}
}

При работе с классом выдается ошибка "Unable to call handler feed_start_element()". Как от нее избавиться?

Kolyaj
На сайте с 28.03.2006
Offline
69
#1

Вместо

xml_set_element_handler($this->parser, 'feed_start_element', 'feed_end_element');
написать
xml_set_element_handler($this->parser, array(this, 'feed_start_element'), array(this, 'feed_end_element'))

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий