如何获取媒体:SimpleXML的内容 [英] How to get media:content with SimpleXML
问题描述
我有一个XML feed,可以在新闻站点上获取有关塞浦路斯的新闻. 我想使用新闻图片,当然也要使用新闻本身.
I have an XML feed that i could fetch news about cyprus on a news site. I want to use news images and of course news itself.
这是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://media.ntvmsnbc.com/j/NTVMSNBC/Components/ArtAndPhoto-Fronts/Sections-StoryLevel/Dünya/Kıbrıs/120723girne.thumb.jpg" 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://media.ntvmsnbc.com/j/NTVMSNBC/Components/ArtAndPhoto-Fronts/Sections-StoryLevel/Dünya/Kıbrıs/120723girne.thumb.jpg">
<media:text>
<![CDATA[<p><a href="http://www.ntvmsnbc.com/id/25368624/">
<img align="left" border="0" src="http://media.ntvmsnbc.com/j/NTVMSNBC/Components/ArtAndPhoto-Fronts/Sections-StoryLevel/Dünya/Kıbrıs/120723girne.thumb.jpg" 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
现在,我使用以下代码使用simpleXML解析此xml.在此代码上,我可以防止显示带有strip_标签的<img>
标签,而我只能在CDATA中显示文本数据.
Now i parse this xml with simpleXML with using below code. On this code i could prevent to display <img>
tag with strip_ tags i could only display text data in CDATA.
简而言之,我要问的是如何将media:content url=""
插入代码中,因为我想在该URL中将thumb.jpg更改为hlarge.jpg.
In short what i am asking is how can i get media:content url=""
into my code as I want to change thumb.jpg to hlarge.jpg in that url .
我尝试了$d['media'] = $news->media->attributes();
'<p>'.$post['media']['url'].
,但是它不起作用
I tried $d['media'] = $news->media->attributes();
'<p>'.$post['media']['url'].
but it's not working
这是我的代码:
<?
$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>';
}
?>
推荐答案
content
元素具有名称空间前缀(<media:content>
),因此无法通过通常的方式进行访问.
The content
element has a namespace prefix (<media:content>
), so it can’t be accessed by the usual means.
媒体"的命名空间URI来自http://search.yahoo.com/mrss/
(请在rss.xml
中检查"xmlns:media").
Namespace-URI for "media" is from http://search.yahoo.com/mrss/
(check your rss.xml
for "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/"
I think there is some prob with the namespace uri "http://search.yahoo.com/mrss/"
我尝试使用您的 xml:
http://codepad.org/P90bOQUj [不起作用]
我尝试使用 other xml:
http://codepad.org/ADYveL6T [有效]
这篇关于如何获取媒体:SimpleXML的内容的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!