Feed parsing
ROME is based around an idealized and abstract model of a Newsfeed, the
SyndFeed class. ROME is able to parse any RSS and Atom feed into this model
and to covert between the different formats.
Internally, ROME defines intermediate object models for specific Newsfeed
formats, or WireFeed formats, including both Atom and RSS variants. For each
format, there is a separate parser that parses XML into an intermediate model.
ROME provides Converters to convert between the intermediate WireFeed models
and the idealized SyndFeed model.
Here is what happens when ROME parses a feed:

- Your code calls
SyndFeedInputto parse a Newsfeed. SyndFeedInputdelegates toWireFeedInputto do the actual parsing.WireFeedInputuses a PluginManager of class FeedParsers to pick the right parser to use to parse the feed and then calls that parser to parse the Newsfeed.- The appropriate parser parses the Newsfeed into a
WireFeed. If the Newsfeed is in an RSS format, theWireFeedis of classChannel. If the Newsfeed is in Atom format, then theWireFeedis of classFeed. In the end,WireFeedInputreturns aWireFeed. SyndFeedInputuses the returnedWireFeedInputto create aSyndFeedImpl. Which implementsSyndFeed.SyndFeedis an interface, the root of an abstraction that represents a format independent Newsfeed.SyndFeedImpluses a Converter to convert between the format specificWireFeedrepresentation and a format-independentSyndFeed.SyndFeedInputreturns aSyndFeedcontaining the parsed Newsfeed.
Extensions
ROME supports extension for RSS 1.0, RSS 2.0 and Atom. Standard modules such as Dublic Core and Syndication are supported and you can define your own custom modules too.