парсинг xml - xml_parse возвращает 0, парсинг не производится

qw354

Новичок
парсинг xml - xml_parse возвращает 0, парсинг не производится

пытался стандартными средствами разбирать xml.
проблема возникла вот здесь:
PHP:
$parser = xml_parser_create();
xml_set_element_handler($parser,'tegstart','tegend');
xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,false);
xml_set_character_data_handler($parser,'tegtext');
$xml = fopen('http://qwark.ya.ru/rss/posts.xml', "r");
xml_parse($parser,$xml);
проблема в том, что xml_parse возвращает 0. неработает - невызываются 'tegstart','tegend' и 'tegtext'. хотя должны как я понял из документации.. естественно сами 'tegstart','tegend' и 'tegtext' выше описаны, я могу привести код, но вроде бы они работают вполне исправно по отдельности:
PHP:
$cat=false;
$cat_num=0;


function tegstart($parser,$name)
{
        echo '<> finded';
        global $teg;
        switch($name)
        {
                case 'category':
                {
                        $cat=true;
                        break;
                }
        }
}

function tegend($parser,$name)
{
        echo '</> finded';
        global $cat_num, $cat;
        switch($name)
        {
                case 'category':
                {
                        $cat=false;
                        $cat_num++;
                        break;
                }
        }
}

function tegtext($parser,$data)
{
    global $teg, $teg_num;
    if ($cat==true)
        echo "$teg_num|$data<br>";
}
ЗЫ: я два дня как учу этот ваш пыхпых, так что не пинайте больно, плиз. а если будите - разборчиво поясните за что.
PHP:
 

phprus

Moderator
Команда форума
qw354
$xml = fopen('http://qwark.ya.ru/rss/posts.xml', "r");
xml_parse($parser,$xml);
Посмотри, что возвращает функция fopen и что хочет получить вторым параметром функция xml_parse.
 

qw354

Новичок
ну, как что, переменную-файл наверное.. ладно, я пытаюсь смотреть документацию но как-то нехрена не ясно. можешь сказать как открыть удаленный файл и применить к нему парсер?

UPD: сделал copy а потом открыл. ну а потом unlink. можно еще какнибудь, напрямую?
 

phprus

Moderator
Команда форума
qw354
Тебе не кажется, что так как xml_parse ждет строку, то для начала необходимо создать переменную и прочитать в нее файл, и только потом вызывать xml_parse. Как все это сделать описано в мане, который даже на русском.
И почитай PHP FAQ: В помощь начинающему
 
Сверху