simplexml enclosure

Статус
В этой теме нельзя размещать новые ответы.

afonya09

Полезный
Регистрация
31 Янв 2009
Сообщения
260
Реакции
19
Всем привет.
Проблемма в получении заначений из объекта 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:
 
Запости xml, а не объект - смотреть не особо удобно.
 
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>
 
Если по твоему коду, то
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 />';
	}
}
 
Получилось всем спасибо.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху