> On Feb 13, 2016, at 10:02 AM, nicholasacosta...@gmail.com wrote:
> 
> 
> 
> hi, what would I need in order to write my own RSS reader for iOS?

- NSURLSession to fetch feeds.
- NSXMLParser to parse the feeds. (I was going to write "NSXMLDocument to parse 
the feeds”, but that class only exists on Mac OS, for some reason)
- libTidy to clean up broken/invalid XML before parsing

Now for the hard parts. I’ve implemented a feed reader in the past (the PubSub 
framework in OS X, which used to be used by Mail and Safari) so I’m intimately 
familiar with the hard parts.

* Some feeds are not valid XML, so NSXMLParser will fail to parse them. (This 
most often happens when people put their HTML articles directly into the XML 
without escaping the HTML.) To work around this you will need to use libTidy, 
an open source library that can clean up invalid XML. (NSXMLDocument already 
supports tidy, but it’s not available on iOS.)

* There are literally about a dozen dialects of RSS and Atom in use, from 
Netscape’s old RSS 0.9 up through RSS 2.0 (which comes in a couple of flavors) 
and Atom 1.0. (Yes, a dozen. Mark Pilgrim made a list of them once.) Some are 
hugely different from each other, some are just a little different. Your code 
that interprets the XML will have to be aware of all of them.

* Once you’ve parsed the articles out of a feed, you probably need to figure 
out which ones are new to you, so you can highlight them or alert the user or 
whatever. Identifying articles varies between the dialects. Atom and RSS 2.0 
have a GUID (unique ID) attribute for this, but it’s not always present. 
Otherwise you can treat the article’s permalink as being the unique ID, if 
there is one. Otherwise you have to go by the title + text.

There are other “fun” details, like parsing dates — the different specs call 
for different date formats, and many feeds just ignore those and emit some 
other date format, which makes parsing them really difficult. Our code ended up 
with a list of about 20(!) date-format strings and tried them one after the 
other.

It’s a total pain in the butt, to be honest. I’m not sure if there are any 
existing open source iOS frameworks for reading feeds, but if there is one, 
you’ll be much better off using it than writing your own.

—Jens
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to