2014-01-23 2 views
1

Я пытаюсь создать страницу, на которой будет отображаться заголовок истории 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-маршрута, поэтому я все еще могу использовать руку. Благодаря!

+0

Хорошо, я сделал некоторые успехи. Я обновил строки '$ result = $ value-> xpath ('media: thumbnail/@ url'); echo ''. "
\ п"; ' к ' $ результат = $ ценностно> XPath ('СМИ: эскиз [@height = "100"]/@ URL'); \t \t echo ''. "
\ n"; ' Теперь мне нужно выяснить, как не пытаться отправить изображение, если изображение 100x100 не найдено. – jms2k

ответ

1

Похоже, ваш RSS XML имеет синтаксическую ошибку, атрибут URL не закрыт:

<media:thumbnail url="//www.website.com/images/img1.jpg width="100" height="100" /> 
+0

Это опечатка с моей стороны ... есть закрывающие кавычки для источника в файле RSS. – jms2k

Смежные вопросы