Как распарсить

Суть задачи: есть xml, отдаваемый для Яндекс.Новости, необходимо из него получить содержимое тега при помощи SimpleXML. Трудность возникает из-за использования в данном случае пространства имен (namespace).

Решение, на самом деле, простое, главное хорошо прочитать мануал:


<?php
// Создать контекст и получить XML с сайта
$path = 'http://inforos.ru/yandex.xml';
$ctx = stream_context_create( array(
	'http' => array( 'timeout' => 6 )
) );
$file = file_get_contents( $path, 0, $ctx );
if ( $file ) {
    // Распарсить полученный XML
    $rss = simplexml_load_string( $file );
    foreach ( $rss->channel->item as $item ){
        $namespaces = $item->getNameSpaces( true );
        $yandex = $item->children( $namespaces[ 'yandex' ] );
        $full_text = (string) $yandex->{'full-text'};
        echo ( $full_text );
        echo ( "nn<hr />nn" );
    }
}
?>

Пример можно посмотреть у меня в песочнице.

Ссылки

Источник: https://www.kobzarev.com/programming/how-to-parse-yandex-full-text/

Михаил Кобзарёв

Суровый русский тимлид. Жил в Магадане, в офисе московских веб студий и в Тульской деревне. Виртуозно знает WordPress, PHP, ООП, Vue.js и вот это вот все. Делает крутые высоконагруженные сайты, поэтому уже почти захватил весь рынок WordPress разработки в России. Не дает никому делать сайты без спроса. Ведет блог о разработке, дайджест в телеграмме и в ВК. Любит сиськи, баню и радиоэлектронику. 100% патриот (но это не точно). Тролль 542 уровня. Ездит в отпуск раз в 5 лет.

Добавить комментарий

%d такие блоггеры, как: