views:

139

answers:

2

I'm parsing various site feeds, and putting together a small library to help me do it.

Looking at the Atom RFC and RSS 2.0 specification, feeds from Twitter seem to be a combination. Twitter specifies an Atom namespace in an RSS 2.0 structure?

GitHub uses Atom, whereas Flickr (offers multiple but the default 'Latest' feed from user profiles) appears to be RSS 2.0.

How can Twitter specify a Atom namespace and then use RSS?

This makes parsing feeds a little ambiguous, unless I ignore any specified namespace and just examine the document structure.

+2  A: 

Twitter does not actually specify the namespace for RSS at all, but it's actually RSS. It specifies the namespace for Atom only because it uses some atom elements internally (specifically it uses an atom:link to refer back to the URL of the feed.

Notice that the xmlns for atom has a prefix specified, which means that only those elements with the atom: prefix in the document are from that namespace.

The simplest method for disambiguating practically is to just look at the root element. If it's Atom, it'll be feed. If it's RSS, it'll be rss.

Yuliy
Thanks for the explanation. Though I never said Twitter specified an RSS namespace, just an Atom one with RSS structure.
Greg K
+1  A: 

It's definitely RSS. For one, Atom feeds don't use channel or item. In light of this, in regards to the specification, you can rule out Atom. And I have a hunch it's not against the RSS spec to declare a namespace.

Regardless, you shouldn't have to worry about parsing feeds yourself; get a parser to do the work for you.

wsorenson
Thanks for the parser link, I'm implementing this in PHP for a Wordpress site.
Greg K