simplexml enclosure

Тема в разделе "PHP", создана пользователем afonya09, 23 май 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. afonya09

    afonya09

    Регистр.:
    31 янв 2009
    Сообщения:
    260
    Симпатии:
    18
    Всем привет.
    Проблемма в получении заначений из объекта enclosure.
    Есть хмл кусок.
    Код:
    SimpleXMLElement Object
    (
        [title] => Пермские уфологи нашли зуб вампира
        [link] => http://perm.aif.ru/society/news/478
        [description] => Зуб упыря передал пермским уфологам местный житель во время экспедиции.
        [pdalink] => http://pda.aif.ru/news/newspda/news_id/index.php?nomb=478
        [category] => ОБЩЕСТВО
        [pubDate] => Sat, 23 May 2009 18:45:50 +0400
        [yandexfulltext] => Зуб упыря передал пермским уфологам местный житель во время экспедиции.
        [enclosure] => Array
            (
                [0] => SimpleXMLElement Object
                    (
                        [@attributes] => Array
                            (
                                [url] => http://perm.aif.ru/application/public/news/704/865122dc19f1fb67424e6379228aadeb_big.jpg
                                [length] => 19846
                                [type] => image/jpeg
                            )
                    )
                [1] => SimpleXMLElement Object
                    (
                        [@attributes] => Array
                            (
                                [url] => http://perm.aif.ru/application/public/news/704/90fea7c39dd52ca74c28110da1badea3_big.jpg
                                [length] => 60024
                                [type] => image/jpeg
                            )
                    )
            )
    )
    Делаю так.
    PHP:
    $file file_get_contents("http://www.aif.ru/rss/all.php");
        
    //$file = file_get_contents("1.txt");
        //echo "<pre>";
        //print_r($file);
        //echo "</pre>";
        
    $file=str_replace("yandex:full-text","yandexfulltext",$file);
        
    $rss simplexml_load_string($file);
    foreach (
    $rss->channel->item as $item) {
            if (
    $item->description!='') {  
                  echo 
    "<p>"iconv('utf-8''windows-1251',$item->description). "</p>";
                  echo 
    "<p>"iconv('utf-8''windows-1251',$item->yandexfulltext). "</p>";    
                foreach (
    $item->enclosure as $enclosure) {
                    
    //echo "<p>".$enclosure->url."</p>";
                    
    $enclo $enclosure->attributes($url);
                    
    print_r($enclo);
                }            
            }    
        }
    Ничего не выходит.
    Хочу получить ,[length],[type]. Как быть??:bc:
     
  2. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    Запости xml, а не объект - смотреть не особо удобно.
     
  3. afonya09

    afonya09

    Регистр.:
    31 янв 2009
    Сообщения:
    260
    Симпатии:
    18
    HTML:
    <item>
    <title>Фестиваль исторических городов в День города Перми</title>
    <link>http://perm.aif.ru/city/news/476</link>
    <description>В День города в Перми состоится Фестиваль исторических городов Прикамья и будет открыт памятник Борису Пастернаку.</description>
    <pdalink>http://pda.aif.ru/news/newspda/news_id/index.php?nomb=476</pdalink>
    <category>ГОРОД</category>
    <pubDate>Sat, 23 May 2009 17:44:01 +0400</pubDate>
    <yandex:full-text>В День города в Перми состоится Фестиваль исторических городов Прикамья и будет открыт памятник Борису Пастернаку. 
    12 июня - традиционный для пермяков июньский праздник - День города.
    Как сообщает администрация города Перми, на заседании организационного комитета по подготовке к празднованию Дня города определена общая концепция праздничных мероприятий и основные события, которые будут радовать пермяков в день 286-летия Перми.
    2009 год - Год Молодежи, поэтому главная идея праздника - &amp;laquo;Пермь: древняя и молодая&amp;raquo;, отражая как историческую ценность &amp;laquo;древней&amp;raquo; Перми, так и новые веяния и достижения Перми &amp;laquo;молодой&amp;raquo;.
    В этом году День города пройдет в рамках ежегодного Фестиваля исторических городов Прикамья. Фестиваль учрежден Правительством Пермского края и ООО &amp;laquo;ЛУКОЙЛ-Пермь&amp;raquo;. 
    Откроет День города праздничный парад, который пройдет по улице Ленина. В нем будет участвовать более 30 машин, каждая из которых будет оформлена в виде ладьи. В машинах будут ехать представители городов Пермского края. Улица будет символизировать Каму, по которой плывут ладьи-города. Сама Пермь будет представлен семью &amp;laquo;ладьями&amp;raquo; - семью районами города. Все машины будут оформлены одинаково, но каждый город и район подготовит индивидуальную программу своего представления.
    Будут организованы концерты под открытым небом на городской эспланаде. На сцене перед Законодательным собранием пройдет концертно-развлекательная программа, посвященная Году молодежи с выступлением звезд российской эстрады. Концерт для семей пройдет на сцене перед Театром-Театром.
    На площадках в центре эспланады состоится открытый Кубок города по баскетболу &amp;laquo;Стритбаскет-2009&amp;raquo; и Ярмарка мастеров, где будут представлены изделия народных промыслов.
    В течение дня на эспланаде будет проходить народное гуляние, а вечером состоится праздничный салют.
    В этом году в рамках проекта по благоустройству мест отдыха пермяков будет установлен ряд новых скульптур на улицах города. 
    В частности, в День города в Перми состоится открытие сразу двух новых памятников. Медведь, отлитый из бронзы, будет установлен у краевого Законодательного собрания, а перед библиотекой имени Горького будет открыт памятник Борису Пастернаку.
    На Алее Доблести и Славы будут заложены новые плиты выдающимся пермякам.
    Впервые в Перми пройдет Фестиваль мастеров кузнечного дела, где на глазах у зрителей будет создан уникальный подарок городу - кованая композиция, которая будет установлена в Сквере молодоженов в День города.
    На набережной Камы можно будет полюбоваться на работы, созданные во время Фестиваля песчаной скульптуры &amp;laquo;Сезон искусств&amp;raquo;, а в театральном сквере перед Пермским академическим театром оперы и балета выступят артисты фестиваля &amp;laquo;Живая Пермь&amp;raquo;. Каждый район города подготовил специальную праздничную программу. В целом 12 июня в городе пройдет более 100 мероприятий.</yandex:full-text>
    <enclosure url="http://perm.aif.ru/application/public/news/003/1e03d2c98921d2044158027969eaf2ce_big.jpg" length="26496" type="image/jpeg" />
    <enclosure url="http://perm.aif.ru/application/public/news/928/c227c437717f86f26b560e7aaef4ca80_big.jpg" length="66405" type="image/jpeg" />
    </item>
     
  4. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    Если по твоему коду, то
    PHP:
    $file file_get_contents("http://www.aif.ru/rss/all.php");
        
    //$file = file_get_contents("1.txt");
        //echo "<pre>";
        //print_r($file);
        //echo "</pre>";
        
    $file=str_replace("yandex:full-text","yandexfulltext",$file);
        
    $rss simplexml_load_string($file);
    foreach (
    $rss->channel->item as $item) {
            if (
    $item->description!='') {  
                  
    //echo "<p>". iconv('utf-8', 'windows-1251',$item->description). "</p>";
                  //echo "<p>". iconv('utf-8', 'windows-1251',$item->yandexfulltext). "</p>";    
                
    foreach ($item->enclosure as $enclosure) {
            echo 
    $enclosure['url'];
            echo 
    $enclosure['length'];
            echo 
    $enclosure['type'];
                }            
            }    
        }
    Добавлено через 9 минут
    Можно и так
    PHP:
    $string = <<<XML
    <item>
    <title>Фестиваль исторических городов в День города Перми</title>
    <link>http://perm.aif.ru/city/news/476</link>
    <description>В День города в Перми состоится Фестиваль исторических городов Прикамья и будет открыт памятник Борису Пастернаку.</description>
    <pdalink>http://pda.aif.ru/news/newspda/news_id/index.php?nomb=476</pdalink>
    <category>ГОРОД</category>
    <pubDate>Sat, 23 May 2009 17:44:01 +0400</pubDate>
    <yandexfull-text>В День города в Перми состоится Фестиваль исторических городов Прикамья и будет открыт памятник Борису Пастернаку. 
    12 июня - традиционный для пермяков июньский праздник - День города.
    Как сообщает администрация города Перми, на заседании организационного комитета по подготовке к празднованию Дня города определена общая концепция праздничных мероприятий и основные события, которые будут радовать пермяков в день 286-летия Перми.
    2009 год - Год Молодежи, поэтому главная идея праздника - &amp;laquo;Пермь: древняя и молодая&amp;raquo;, отражая как историческую ценность &amp;laquo;древней&amp;raquo; Перми, так и новые веяния и достижения Перми &amp;laquo;молодой&amp;raquo;.
    В этом году День города пройдет в рамках ежегодного Фестиваля исторических городов Прикамья. Фестиваль учрежден Правительством Пермского края и ООО &amp;laquo;ЛУКОЙЛ-Пермь&amp;raquo;. 
    Откроет День города праздничный парад, который пройдет по улице Ленина. В нем будет участвовать более 30 машин, каждая из которых будет оформлена в виде ладьи. В машинах будут ехать представители городов Пермского края. Улица будет символизировать Каму, по которой плывут ладьи-города. Сама Пермь будет представлен семью &amp;laquo;ладьями&amp;raquo; - семью районами города. Все машины будут оформлены одинаково, но каждый город и район подготовит индивидуальную программу своего представления.
    Будут организованы концерты под открытым небом на городской эспланаде. На сцене перед Законодательным собранием пройдет концертно-развлекательная программа, посвященная Году молодежи с выступлением звезд российской эстрады. Концерт для семей пройдет на сцене перед Театром-Театром.
    На площадках в центре эспланады состоится открытый Кубок города по баскетболу &amp;laquo;Стритбаскет-2009&amp;raquo; и Ярмарка мастеров, где будут представлены изделия народных промыслов.
    В течение дня на эспланаде будет проходить народное гуляние, а вечером состоится праздничный салют.
    В этом году в рамках проекта по благоустройству мест отдыха пермяков будет установлен ряд новых скульптур на улицах города. 
    В частности, в День города в Перми состоится открытие сразу двух новых памятников. Медведь, отлитый из бронзы, будет установлен у краевого Законодательного собрания, а перед библиотекой имени Горького будет открыт памятник Борису Пастернаку.
    На Алее Доблести и Славы будут заложены новые плиты выдающимся пермякам.
    Впервые в Перми пройдет Фестиваль мастеров кузнечного дела, где на глазах у зрителей будет создан уникальный подарок городу - кованая композиция, которая будет установлена в Сквере молодоженов в День города.
    На набережной Камы можно будет полюбоваться на работы, созданные во время Фестиваля песчаной скульптуры &amp;laquo;Сезон искусств&amp;raquo;, а в театральном сквере перед Пермским академическим театром оперы и балета выступят артисты фестиваля &amp;laquo;Живая Пермь&amp;raquo;. Каждый район города подготовил специальную праздничную программу. В целом 12 июня в городе пройдет более 100 мероприятий.</yandexfull-text>
    <enclosure url="http://perm.aif.ru/application/public/news/003/1e03d2c98921d2044158027969eaf2ce_big.jpg" length="26496" type="image/jpeg" />
    <enclosure url="http://perm.aif.ru/application/public/news/928/c227c437717f86f26b560e7aaef4ca80_big.jpg" length="66405" type="image/jpeg" />
    </item>
    XML;

    $xml simplexml_load_string($string);
    foreach(
    $xml->enclosure as $e) {
        foreach(
    $e->attributes() as $a => $b) {
            echo 
    $a,'=',$b,'<br />';
        }
    }
     
    yaski и afonya09 нравится это.
  5. afonya09

    afonya09

    Регистр.:
    31 янв 2009
    Сообщения:
    260
    Симпатии:
    18
    Получилось всем спасибо.
     
Статус темы:
Закрыта.