Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: X технологии > Прочитать тэг <content:encoded>


Автор: KaKTyCc 4.7.2009, 13:21
Всем привет!

Есть xml с тэгом <content:encoded>
Как прочитать его содержимое? Использую библиотеку SimpleXMLElement.
Обычные тэги читаются без проблем...

Код

    $xml = simplexml_load_file($filename);    
    foreach ($xml->channel->item as $item) {
        $title = $item->title; 
        $link = $item->link;
        $description = $item->description;
        $tag = $item->category;
}


И вопрос связанный с $item->category;
такая конструкция читает только первый тэг, а у меня может быть их несколько в рамках одного item 
<category><![CDATA[охота]]></category>
<category><![CDATA[ров]]></category>
<category><![CDATA[рог]]></category>
<category><![CDATA[север]]></category>
<category><![CDATA[транспорт]]></category

надо все это хозяйство в один массив $tag засунуть

Автор: KaKTyCc 4.7.2009, 14:27
Немного продвинулся  smile 

Код

foreach ($xml->channel->item as $item) {
        $title = $item->title;
        $para = $item->para;
        $a = $item->xpath('//content:encoded');
        print_r($a);
}



собственно два раза выводит массив всех <content:encoded>.
А надо чтобы при каждом проходе цикла выводил <content:encoded>  для своего item 

Автор: KaKTyCc 4.7.2009, 15:01
Первую проблему решил так

Код

    $i = 1;
    foreach ($xml->channel->item as $item) {
        $title = $item->title;
        $link = $item->link;
        $description = $item->description;
        $fullDescription = $xml->xpath("//item[{$i}]/content:encoded");
        
        if(!empty($fullDescription[0][0])){
            $description = $fullDescription[0][0];
        }
                $i++;
    }


Если знаете решение лучше, буду благодарен.            

Автор: KaKTyCc 4.7.2009, 15:17
Код

        $tag = implode(",", $xml->xpath("//item[{$i}]/category"));


а так решил проблему с тэгами, может коряво, но на время сойдет,
буду благодарен другим, лучшим решениям

Автор: borshov 30.11.2009, 14:47
С помощью функции XML Parser Functions можно прочесть <content:encoded>

Код

<?
$url = 'rss.xml'; 
$xml = xml_parser_create();    
xml_parser_set_option($xml, XML_OPTION_SKIP_WHITE, 1); 
xml_parse_into_struct($xml, file_get_contents($url), $element, $index);
xml_parser_free($xml); 
$count = count($index["TITLE"])-1; 

for ($i=0; $i < $count; $i++) {
echo '<h1>'.$element[$index["TITLE"][$i+1]]["value"].'</h1>'; 
echo $element[$index["CONTENT:ENCODED"][$i+1]]["value"]; 
}
?>

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)