I'm still in shock over this. I wrote an RSS parser for my podcast receiver, and it worked first time:
All I need to do now is return the item link and title along with the enclosure data, then I can start getting the data into the RDF store (which also works, after a slightly more painful experience).
Just a note about how getting an ID is harder than it should be: I take the <guid> as the item ID, unless that's absent in which case I take the <link>. If I have an item ID, the IDs for the enclosures become "<itemid>#1", etc.. If I don't have an item ID, the enclosure ID falls back to being the URL. This way, an existing enclosure's URL can change without causing another download, and an item can have multiple enclosures.
(The latter is forbidden in RSS 2.0, and I might disable it. However, I need it to work because it's acceptable in Atom, which I'll be supporting later.)
Feedback is closed. Feel free to contact me privately.