A Cocoa RSS/Atom parser for Mac OS X and the iPhone
Latest commit 40d12ee Feb 28, 2013 @kballard Add support for <category>
FPItem now has a property .categories which is an array of FPCategory

FPCategory has two properties:
  - .domain: the optional domain of the category
  - .value: The textual value of the category

Thanks to StuFF mc <mc@stuffmc.com> for the original implementation.



FeedParser is an NSXMLParser-based RSS/Atom feed parser for Cocoa. It is intended to parse well-formed RSS and Atom feeds on both the desktop and the iPhone.


The simplest way to use FeedParser is to simply add the FeedParser directory to your project. FeedParser also includes a static library target if you prefer to include it that way.

Design Goals

FeedParser was designed to parse valid RSS and Atom feeds, including support for extensions outside of the RSS or Atom namespaces. All parsed feeds MUST be well-formed, but the parser may or may not enforce validity.

Current State

As of this writing, FeedParser can parse a full valid RSS 2.0 feed, though it intentionally skips elements that I did not consider useful. The parser may be extended later to expose the values of those elements. FeedParser has only a limited understanding of Atom feeds. It can understand a handful of Atom elements embedded within an RSS feed, but it cannot understand a complete Atom feed. Full understanding of Atom feeds is one of the future goals of this project.

FeedParser requires that the entire feed must be a well-formed XML document, but it does not do any validity checking of individual elements.

Future Development

The goals for future development of FeedParser are the following:

  • Fully support Atom feeds

  • Be as lenient as possible. To this extent, parsing non-well-formed documents should be investigated. NSXMLParser is documented as aborting parsing upon encountering an error, but in practice it appears that, at least on Mac OS X 10.5, it actually can recover from errors. However, at the current time FeedParser explicitly aborts the parser when an error is encountered

  • Support the more common RSS/Atom extensions

  • Better error reporting

Naming Issues

The name FeedParser conflicts with RSS/Atom parsers for other languages. A new name unique name should be chosen that is available on Google Code for bug reporting purposes.