Как получить медиа: контент с SimpleXML

У меня есть XML-канал, который я мог бы получить новости о кипре на новостном сайте. Я хочу использовать новостные изображения и, конечно же, новости.

Вот пример xml

<item> <title>Rumlardan KKTC üniversitelerine ambargo</title> <description> <![CDATA[<p><a href="http://www.ntvmsnbc.com/id/25368624/"> <img align="left" border="0" src="http://img.ruphp.com/php/" alt="" style="margin:0 5px 5px 0" /></a> Kıbrıs Rum yönetimi, KKTC'deki üniversitelerle işbirliği yapan ülkelerin eğitim kurumlarına resmi yazılar göndererek yetkilileri tehdit ediyor. Hindistan üniversitesinden ortak akademik programlara son verilmesi istendi.</p><br clear="all" />]]> </description> <link>http://www.ntvmsnbc.com/id/25368624/</link> <media:content medium="image" url="http://img.ruphp.com/php/"> <media:text> <![CDATA[<p><a href="http://www.ntvmsnbc.com/id/25368624/"> <img align="left" border="0" src="http://img.ruphp.com/php/" alt="" style="margin:0 5px 5px 0" /> </a> </p> <br clear="all" />]]> </media:text> </media:content> <pubDate>Mon, 23 Jul 2012 14:27:32 GMT</pubDate> <category>Haberler</category> <guid isPermaLink="true">http://www.ntvmsnbc.com/id/25368624/</guid> </item> 

Ссылка на xml: http://www.ntvmsnbc.com/id/24928068/device/rss/rss.xml

Теперь я проанализирую этот xml с помощью simpleXML с использованием кода ниже. В этом коде я мог бы предотвратить отображение <img> тегами strip_, которые могли отображать только текстовые данные в CDATA.

Короче говоря, я спрашиваю, как я могу получить media:content url="" в свой код, поскольку я хочу изменить thumb.jpg на hlarge.jpg в этом URL-адресе.

Я пробовал $d['media'] = $news->media->attributes(); '<p>'.$post['media']['url']. но он не работает

Вот мой код:

 <? $NewsFeedUrl = "http://www.ntvmsnbc.com/id/24928068/device/rss/rss.xml"; $xml = @simplexml_load_file($NewsFeedUrl); if(is_object($xml)){ //Rest of our code will be here }else{ die('Güncel Haberlere Bağlanılamıyor.'); } foreach($xml->channel->item as $news){ if(is_array($newsContent) && count($newsContent)==$amountToShow){ } $description = $news->description; $d['title'] =$news->title; $d['link'] = $news->link; $d['media'] = $news->media->attributes(); $d['cont'] = $news->description; $d['date'] = $news->pubDate; $newsContent[]=$d; } //$ad=array("thumb", "left"); if(is_array($newsContent)){ foreach($newsContent as $post){ echo ' <article class="entry"><h3>'.'<a href="'.$post['link'].' "target="_blank">'.$post['title'].'</a></h3> '.'<div class="meta"><span class="date_post">'.$post['date'].'</span>'.$post['pubDate']. //'<p>'.str_replace($ad,"hlarge",$post['cont']). '<p>'.$post['cont']. '<p>'.strip_tags($post['cont']). //'<p>'.$post['media']['url']. '<p><a href="'.$post['link'].' "target="_blank" class="button">Devamını Oku</a>'. ' </article>'; } }else{ echo '<p>Güncel Haberler Alınamadı Sayfayı Yenilemeyi Deneyin.</p>'; } ?> 

Solutions Collecting From Web of "Как получить медиа: контент с SimpleXML"

Элемент content имеет префикс пространства имен ( <media:content> ), поэтому к нему нельзя получить доступ обычными средствами.

Namespace-URI для «media» – это http://search.yahoo.com/mrss/ (проверьте свой rss.xml для «xmlns: media»).

Попробуй это:

 foreach ($xml->channel->item as $news) { $ns_media = $news->children('http://search.yahoo.com/mrss/'); echo $ns_media->content; // displays "<media:content>" } 

РЕДАКТИРОВАТЬ :

Я думаю, что есть некоторая проблема с пространством имен uri " http://search.yahoo.com/mrss/ "

Я попытался использовать ваш xml:

http://codepad.org/P90bOQUj [не работает]

Я пробовал использовать другой xml:

http://codepad.org/ADYveL6T [рабочий]