Chris@0: # Consuming Atom Feeds Chris@0: Chris@0: `Zend\Feed\Reader\Feed\Atom` is used in much the same way as Chris@0: `Zend\Feed\Reader\Feed\Rss`. It provides the same access to feed-level Chris@0: properties and iteration over entries in the feed. The main difference is in the Chris@0: structure of the Atom protocol itself. Atom is a successor to RSS; it is a Chris@0: more generalized protocol and it is designed to deal more easily with feeds that Chris@0: provide their full content inside the feed, splitting RSS' `description` tag Chris@0: into two elements, `summary` and `content`, for that purpose. Chris@0: Chris@0: ## Basic Use of an Atom Feed Chris@0: Chris@0: Read an Atom feed and print the `title` and `summary` of each entry: Chris@0: Chris@0: ```php Chris@0: $feed = Zend\Feed\Reader\Reader::import('http://atom.example.com/feed/'); Chris@0: echo 'The feed contains ' . $feed->count() . ' entries.' . "\n\n"; Chris@0: foreach ($feed as $entry) { Chris@0: echo 'Title: ' . $entry->getTitle() . "\n"; Chris@0: echo 'Description: ' . $entry->getDescription() . "\n"; Chris@0: echo 'URL: ' . $entry->getLink() . "\n\n"; Chris@0: } Chris@0: ``` Chris@0: Chris@0: > ## Importing requires an HTTP client Chris@0: > Chris@0: > To import a feed, you will need to have an [HTTP client](zend.feed.http-clients) Chris@0: > available. Chris@0: > Chris@0: > If you are not using zend-http, you will need to inject `Reader` with the HTTP Chris@0: > client. See the [section on providing a client to Reader](http-clients.md#providing-a-client-to-reader). Chris@0: Chris@0: In an Atom feed, you can expect to find the following feed properties: Chris@0: Chris@0: - `title`: The feed's title, same as RSS' channel title. Chris@0: - `id`: Every feed and entry in Atom has a unique identifier. Chris@0: - `link`: Feeds can have multiple links, which are distinguished by a `type` Chris@0: attribute. The equivalent to RSS's channel link would be `type="text/html"`. Chris@0: If the link is to an alternate version of the same content that's in the feed, Chris@0: it would have a `rel="alternate"` attribute. Chris@0: - `subtitle`: The feed's description, equivalent to RSS' channel description. Chris@0: - `author`: The feed's author, with `name` and `email` sub-tags. Chris@0: Chris@0: Atom entries commonly have the following properties: Chris@0: Chris@0: - `id`: The entry's unique identifier. Chris@0: - `title`: The entry's title, same as RSS item titles. Chris@0: - `link`: A link to another format or an alternate view of this entry. Chris@0: The link property of an atom entry typically has an `href` attribute. Chris@0: - `summary`: A summary of this entry's content. Chris@0: - `content`: The full content of the entry; can be skipped if the feed just Chris@0: contains summaries. Chris@0: - `author`: with `name` and `email` sub-tags like feeds have. Chris@0: - `published`: the date the entry was published, in RFC 3339 format. Chris@0: - `updated`: the date the entry was last updated, in RFC 3339 format. Chris@0: Chris@0: Where relevant, `Zend\Feed` supports a number of common RSS extensions including Chris@0: Dublin Core; Content, Slash, Syndication, and Syndication/Thread; and several Chris@0: others in common use on blogs. Chris@0: Chris@0: For more information on Atom and plenty of resources, see Chris@0: [http://www.atomenabled.org/](http://www.atomenabled.org/).