Parsing a FeedBurner feed with SimpleXML requires only a single gotcha: the actual parsing starts from the root element, not from the whole object created with the simplexml_load_file()
function. For example, the following code returns nothing:
$feed = simplexml_load_file('http://feeds.feedburner.com/blogspot/onwebdev/'); foreach($feed->item as $item) { //... nothing here }
Instead, the following code works as expected:
$feed = simplexml_load_file('http://feeds.feedburner.com/blogspot/onwebdev/'); foreach($feed->channel->item as $item) { $title = $item->title; $raw_author = $item->author; $author = str_replace('gabriele.romanato@gmail.com', '', $raw_author); $author = str_replace('(', '', $author); $author = str_replace(')', '', $author); $links = $item->children('http://rssnamespace.org/feedburner/ext/1.0'); $link = $links->origLink; $raw_date = $item->pubDate; $pubdate = str_replace('+0000', '', $raw_date); echo '<li><a href="' . $link . '">' . $title . '</a>' . "\n" . '<div class="author">' . $author . '</div>' . "\n" . '<div class="pubdate">' . $pubdate . '</div>' . "</li>\n"; }
You can notice that now the parsing starts from the channel
element. You can see the final result
here.