Я пытаюсь создать страницу, на которой будет отображаться заголовок истории RSS, а также изображение. Каждая история имеет название. У большинства есть изображение, но мне нужно отображать только изображения, если они имеют высоту и ширину, равную «100». До сих пор я не успевал фильтровать атрибуты. Я новичок в XML и неопытный в PHP, но вот то, что я до сих пор:Показать заголовок и изображение из RSS с помощью 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" />
Как вы можете видеть, я попытался ищу атрибут height = «100», но не повезло.
Мне также нужно убедиться, что я не пытаюсь отобразить изображение, если изображение 100x100 отсутствует, и сделать один с помощью simplexml и один с помощью XML/XSL. Какие-нибудь советы?
EDIT: Я ДУМАЮ, Я понял. Это работает, по крайней мере. Вот что я сделал:
<?
$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";
}
}
?>
Так, это работает ... Я просто не уверен, если это считается «хорошим кодом». Кроме того, я должен сделать это двумя способами: с помощью simplexml, а затем с использованием XML/XSL. Не уверен, как это сделать с помощью XML/XSL-маршрута, поэтому я все еще могу использовать руку. Благодаря!
Хорошо, я сделал некоторые успехи. Я обновил строки '$ result = $ value-> xpath ('media: thumbnail/@ url'); echo ''. "
\ п"; ' к ' $ результат = $ ценностно> XPath ('СМИ: эскиз [@height = "100"]/@ URL'); \t \t echo ''. "
\ n"; ' Теперь мне нужно выяснить, как не пытаться отправить изображение, если изображение 100x100 не найдено. – jms2k