RSS / XML mit PHP auslesen und ausgeben

Ich möchte einen Feed mit PHP auslesen und auf meiner Page ausgeben lassen. Habe dazu auch eine Funktion gefunden die klappen sollte:
PHP:
<?php

    $filename = 'http://www.hartware.net/xml/news.rdf';

    // Feed laden
    if( !$xml = simplexml_load_file($filename) ) {
        die('Fehler beim Einlesen der XML Datei!');
    }

    // Ausgabe Array
    $out = array();
    // auszulesende Datensaetze
    $i = 5;

    // Items vorhanden?
    if( !isset($xml->item) ) {
        die('Keine Items vorhanden!');
    }

    // fetchen der Items
    foreach($xml->item as $item) {
        if( $i-- == 0 ) {
            break;
        }
        $out[] = array(
            'title'         => (string) $item->title,
            'description'   => (string) $item->description,
            'link'          => (string) $item->link,
            // 'date'         => date('d.m.Y', strtotime((string) $item->pubDate))
        );
    }

?>

Der Feed ist folgendermaßen aufgebaut:
Code:
<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet type='text/xsl' href='http://rss.feedsportal.com/xsl/de/rss.xsl'?>
<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" 
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" version="2.0">
<channel>

<title>Hartware.net News</title><link>http://www.hartware.net/</link><description>Die wichtigsten Hardwarenews der 
letzten Tage</description><language>en</language><pubDate>Thu, 30 Apr 2009 14:26:00 GMT</pubDate><lastBuildDate>Thu, 30 Apr 2009 14:26:00 GMT</lastBuildDate><ttl>30</ttl><image><title>Hartware.net 
News</title><url>http://www.hartware.net/gfx/hartware88x30.jpg</url><link>http://www.hartware.net/</link></image>

<item><title>OCZ mit 910-Watt-Netzteil</title><link>
http://rss.feedsportal.com/c/665/f/8431/s/409a5ec/l/0L0Shartware0Bnet0Cnews0I46850A0Bhtml/story01.htm</link><description>PC Power &amp; Cooling Silencer 910 besitzt "80Plus Silber"-Zertifizierung
&lt;img width='1' height='1' src='http://rss.feedsportal.com/c/665/f/8431/s/409a5ec/mf.gif' border='0'/&gt;&lt;div class='mf-viral'&gt;&lt;table border='0'&gt;&lt;tr&gt;&lt;td valign='middle'
&gt;&lt;a href="http://res.feedsportal.com/viral/sendemail2_de.html?title=OCZ mit 910-Watt-Netzteil&amp;link=http://www.hartware.net/news_46850.html" target="_blank"&gt;&lt;img 
src="http://rss.feedsportal.com/images/emailthis2.gif" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td valign='middle'&gt;&lt;a href="http://res.feedsportal.com/viral/bookmark_de.cfm?title=OCZ mit 
910-Watt-Netzteil&amp;link=http://www.hartware.net/news_46850.html" target="_blank"&gt;&lt;img src="http://rss.feedsportal.com/images/bookmark.gif" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr
&gt;&lt;/table&gt;&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="http://da.feedsportal.com/r/38124252471/u/5/f/8431/c/665/s/67741164/a2.htm"&gt;&lt;img 
src="http://da.feedsportal.com/r/38124252471/u/5/f/8431/c/665/s/67741164/a2.img" border="0"/&gt;&lt;/a&gt;</description><pubDate>Thu, 30 Apr 2009 13:32:21 GMT</pubDate><guid isPermaLink="false">
http://www.hartware.net/news_46850.html</guid></item>

</channel></rss>

Leider springt mein Code jetzt immer in die If-Anweisung und behauptet, dass kein <item> existiert. Ich denke das liegt mit der etwas komischen RSS-Datei zusammen.
Wie kann ich den Code umschreiben, damit er funktioniert?
 

Sven Mintel

Mitglied
Moin,


dein $xml beinhaltet ja das DocumentElement(das Root-Element)....also <rss>

die <item>'s sind jedoch keine Kindelemente von <rss>, sondern von channel, demzufolge müsste der Pfad lauten:
Code:
$xml->channel[0]->item