Using the feedapi module with simplepie as the feed parser, I was unable to load feeds from Feedburner. These feeds were valid XML, valid RSS, and loaded fine into Google Reader and Newsgator, although interestingly, they did not load into the Yahoo news reader (interesting note: Google acquired Feedburner in 2007), nor did it load in Michael Shipley's RSS analyzer http://www.michaelpshipley.com/demos/feed-analyzer/. The latter uses Simplepie.
I made an inquiry to Simplepie and received the following from Ryan Parman, author of Simplepie:
Two things:
1) FeedBurner is intentionally mean to SimplePie: http://simplepie.org/wiki/faq/problematic_feeds#feedburner
2) It may simply be a matter of incorrect headers. Try forcing an
override. http://simplepie.org/wiki/reference/simplepie/force_feed
I did everything except change the user agent first, assuming that could not possibly be the cause. Nothing fixed the problem. From the Simplepie error dump, I continued to get the following:
XML error: SYSTEM or PUBLIC, the URI is missing at line 1, column 48
So, in a final act of desperation, in the function _parser_simplepie_get_parser in parser_simplepie.module, I changed the user agent per the instructions above to:
$parser->set_useragent('made_up_user_agent (Feed Parser; http://www.mycompany.org; Allow like Gecko) Build/20090114');
and lo and behold Feedburner started serving the feed with no problems.
I am left amazed that Feedburner could be doing such a malicious disservice to the user community (Dave Winer would have a heyday with this one), and surprised that this issue hasn't been better documented. It is obviously not a Drupal-specific issue; its relevant to anyone using Simplepie to do feed parsing. I hope to both save some headaches and just maybe drive some change within Feedburner.