NAME

XML::Atom::Feed - Atom feed

SYNOPSIS

use XML::Atom::Feed;
use XML::Atom::Entry;
my $feed = XML::Atom::Feed->new;
$feed->title('My Weblog');
my $entry = XML::Atom::Entry->new;
$entry->title('First Post');
$entry->content('Post Body');
$feed->add_entry($entry);
$feed->add_entry($entry, { mode => 'insert' });

my @entries = $feed->entries;
my $xml = $feed->as_xml;

## Get a list of the <link rel="..." /> tags in the feed.
my $links = $feed->link;

## Find all of the Atom feeds on a given page, using auto-discovery.
my @uris = XML::Atom::Feed->find_feeds('http://www.example.com/');

## Use auto-discovery to load the first Atom feed on a given page.
my $feed = XML::Atom::Feed->new(URI->new('http://www.example.com/'));

USAGE

XML::Atom::Feed->new([ $stream ])

Creates a new feed object, and if $stream is supplied, fills it with the data specified by $stream.

Automatically handles autodiscovery if $stream is a URI (see below).

Returns the new XML::Atom::Feed object. On failure, returns undef.

$stream can be any one of the following:

  • Reference to a scalar

    This is treated as the XML body of the feed.

  • Scalar

    This is treated as the name of a file containing the feed XML.

  • Filehandle

    This is treated as an open filehandle from which the feed XML can be read.

  • URI object

    This is treated as a URI, and the feed XML will be retrieved from the URI.

    If the content type returned from fetching the content at URI is text/html, this method will automatically try to perform auto-discovery by looking for a <link> tag describing the feed URL. If such a URL is found, the feed XML will be automatically retrieved.

    If the URI is already of a feed, no auto-discovery is necessary, and the feed XML will be retrieved and parsed as normal.

XML::Atom::Feed->find_feeds($uri)

Given a URI $uri, use auto-discovery to find all of the Atom feeds linked from that page (using <link> tags).

Returns a list of feed URIs.

If called in scalar context, returns an XML::Atom::Link object corresponding to the first <link> tag found in the feed.

If called in list context, returns a list of XML::Atom::Link objects corresponding to all of the <link> tags found in the feed.

$feed->add_link($link)

Adds the link $link, which must be an XML::Atom::Link object, to the feed as a new <link> tag. For example:

my $link = XML::Atom::Link->new;
$link->type('text/html');
$link->rel('alternate');
$link->href('http://www.example.com/');
$feed->add_link($link);

$feed->add_entry($entry)

Adds the entry $entry, which must be an XML::Atom::Entry object, to the feed. If you want to add an entry before existent entries, you can pass optional hash reference containing mode value set to insert.

$feed->add_entry($entry, { mode => 'insert' });

$feed->entries

Returns list of XML::Atom::Entry objects contained in the feed.

$feed->language

Returns the language of the feed, from xml:lang.

$feed->author([ $author ])

Returns an XML::Atom::Person object representing the author of the entry, or undef if there is no author information present.

If $author is supplied, it should be an XML::Atom::Person object representing the author. For example:

my $author = XML::Atom::Person->new;
$author->name('Foo Bar');
$author->email('foo@bar.com');
$feed->author($author);

AUTHOR & COPYRIGHT

Please see the XML::Atom manpage for author, copyright, and license information.