我正在尝试创建一个页面,该页面将显示RSS故事的标题以及图像。每个故事都有一个标题。大多数都有图像,但如果图像的高度和宽度设置为“100”,我只需要显示图像。到目前为止,我没有成功过滤属性。我对XML非常陌生,对PHP缺乏经验,但到目前为止我还有:
<?
$xml = simplexml_load_file("./_resources/xml/news.rss");
foreach ($xml->channel->item as $key => $value) {
echo $value->title . "<br />\n";
$value->registerXPathNamespace('media','http://search.yahoo.com/mrss/');
//$result = $value->xpath('media:thumbnail[@height = "100"]');
$result = $value->xpath('media:thumbnail/@url');
echo '<img src="http:' . $result . '">' . "<br />\n";
}
?>
RSS的结构如下:
<channel>
<title>Title Here</title>
<description>Here's the description</description>
<content:encode>Here's some content for you</content:encode>
<media:thumbnail url="//www.website.com/images/img1.jpg" width="100" height="100" />
<media:thumbnail url="//www.website.com/images/img2.jpg" width="150" height="150" />
正如你所看到的,我尝试寻找身高=“100”的属性,但没有运气。
如果不存在100x100图像,我还需要确保不尝试显示图像,使用simplexml制作一个图像,使用XML / XSL制作一个图像任何提示?
编辑: 我想我弄清楚了。它起作用,至少。这是我做的:
<?
$xml = simplexml_load_file("./_resources/xml/news.rss");
foreach ($xml->channel->item as $key => $value) {
echo $value->title . "<br />\n";
$value->registerXPathNamespace('media','http://search.yahoo.com/mrss/');
$result = $value->xpath('media:thumbnail[@height = "100"]/@url');
if ($result != null){
echo '<img src="http:' . $result[0] . '">' . "<br />\n";
} else {
echo '<img src="./images/noimage.jpg" height="100" width="100">' . "<br />\n";
}
}
?>
所以,它工作......我只是不确定它是否被认为是“好代码”。另外,我应该这样做2种方法:使用simplexml,然后使用XML / XSL。不知道如何使用XML / XSL路由,所以我仍然可以在那里使用手。谢谢!
答案 0 :(得分:1)
看起来你的rss xml有语法错误,url属性没有关闭:
<media:thumbnail url="//www.website.com/images/img1.jpg width="100" height="100" />