我试图解析链接 rss feed with images using php
我尝试解析rss feed以显示来自enclosure标记的图像。我尝试了该链接上给出的解决方案。但它不起作用。 element_attributes函数尚未定义。
所以,我尝试使用xPath获取图像。以下是我的输出(空数组):
Array()
在我的网络服务器错误日志上。
有谁可以指出我哪里出错了?谢谢。
<?php
if (function_exists("curl_init")){
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL, 'http://menmedia.co.uk/manchestereveningnews/news/rss.xml');
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
//curl_setopt($ch,CURLOPT_HEADER,0);
$data=curl_exec($ch);
curl_close($ch);
$doc=new SimpleXmlElement($data,LIBXML_NOCDATA);
function getImage($xml){
$imgs=$xml->xPath('rss/channel/enclosure[@attributes]');
print_r($imgs);
/*foreach ($imgs as $image){
echo $image->url;
}*/
}
if (isset($doc->channel)) getImage($doc);
} ?&GT;
答案 0 :(得分:1)
$imgs=$xml->xPath('//channel/item/enclosure');
foreach($imgs as $img) {
var_dump($img->attributes());
}
答案 1 :(得分:1)
此单个XPath表达式:
/rss/channel/item/enclosure/@*
选择所有enclosure
元素的所有属性,这些属性是作为顶级channel
元素子元素的所有rss
元素的子元素。
使用以下内容既简单又高效:
//channel/item/enclosure
然后在单独的评估中找到属性。
请记住:
评估从//
伪运算符开始的XPath表达式通常比使用特定路径要慢得多 - 因为这会导致非优化的XPath处理器遍历整个文档。
答案 2 :(得分:1)
我得到了它的工作。它显示所有图像。正如Dimitre建议的那样,我使用'/ rss / channel / item / enclosure'减去'@ *'。以下是我的功能:
function getImage($xml){
$encls=$xml->xPath('/rss/channel/item/enclosure');
foreach($encls as $encl) {
print_r('<img src='.$encl->attributes()->url.'/>');
echo('<br>');
}
}//end function getImage
谢谢你们!