Provided by: libxml-feed-perl_0.53+dfsg-1_all bug

NAME

       XML::Feed - Syndication feed parser and auto-discovery

SYNOPSIS

           use XML::Feed;
           my $feed = XML::Feed->parse(URI->new('http://example.com/atom.xml'))
               or die XML::Feed->errstr;
           print $feed->title, "\n";
           for my $entry ($feed->entries) {
           }

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

DESCRIPTION

       XML::Feed is a syndication feed parser for both RSS and Atom feeds. It also implements
       feed auto-discovery for finding feeds, given a URI.

       XML::Feed supports the following syndication feed formats:

       •   RSS 0.91

       •   RSS 1.0

       •   RSS 2.0

       •   Atom

       The goal of XML::Feed is to provide a unified API for parsing and using the various
       syndication formats. The different flavors of RSS and Atom handle data in different ways:
       date handling; summaries and content; escaping and quoting; etc. This module attempts to
       remove those differences by providing a wrapper around the formats and the classes
       implementing those formats (XML::RSS and XML::Atom::Feed). For example, dates are handled
       differently in each of the above formats. To provide a unified API for date handling,
       XML::Feed converts all date formats transparently into DateTime objects, which it then
       returns to the caller.

USAGE

   XML::Feed->new($format)
       Creates a new empty XML::Feed object using the format $format.

           $feed = XML::Feed->new('Atom');
           $feed = XML::Feed->new('RSS');
           $feed = XML::Feed->new('RSS', version => '0.91');

   XML::Feed->parse($stream)
   XML::Feed->parse($stream, $format)
       Parses a syndication feed identified by $stream and returns an XML::Feed object. $stream
       can be any one of the following:

       •   Scalar reference

           A reference to string containing the XML body of the feed.

       •   Filehandle

           An open filehandle from which the feed XML will be read.

       •   File name

           The name of a file containing the feed XML.

       •   URI object

           A URI from which the feed XML will be retrieved.

       $format allows you to override format guessing.

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

       Returns a list of feed URIs.

   XML::Feed->identify_format(\$xml)
       Given the xml of a feed return what format it is in, with "Atom" or "RSS" for all versions
       of RSS.  Note that you pass in a scalar ref to the xml string.

   $feed->convert($format)
       Converts the XML::Feed object into the $format format, and returns the new object.

   $feed->splice($other_feed)
       Splices in all of the entries from the feed $other_feed into $feed, skipping posts that
       are already in $feed.

   $feed->format
       Returns the format of the feed ("Atom", or some version of "RSS").

   $feed->title([ $title ])
       The title of the feed/channel.

   $feed->base([ $base ])
       The url base of the feed/channel.

   $feed->link([ $uri ])
       The permalink of the feed/channel.

   $feed->tagline([ $tagline ])
       The description or tagline of the feed/channel.

   $feed->description([ $description ])
       Alias for $feed->tagline.

   $feed->author([ $author ])
       The author of the feed/channel.

   $feed->language([ $language ])
       The language of the feed.

   $feed->copyright([ $copyright ])
       The copyright notice of the feed.

   $feed->modified([ $modified ])
       A DateTime object representing the last-modified date of the feed.

       If present, $modified should be a DateTime object.

   $feed->generator([ $generator ])
       The generator of the feed.

   $feed->self_link ([ $uri ])
       The Atom Self-link of the feed:

       <http://validator.w3.org/feed/docs/warning/MissingAtomSelfLink.html>

       A string.

   $feed->entries
       A list of the entries/items in the feed. Returns an array containing XML::Feed::Entry
       objects.

   $feed->items
       A synonym (alias) for <$feed->entries>.

   $feed->add_entry($entry)
       Adds an entry to the feed. $entry should be an XML::Feed::Entry object in the correct
       format for the feed.

   $feed->as_xml
       Returns an XML representation of the feed, in the format determined by the current format
       of the $feed object.

   $feed->first_link ([ $uri ])
       The Atom First-link for feed paging and archiving (RFC 5005).

       <http://tools.ietf.org/html/rfc5005>

   $feed->last_link ([ $uri ])
       The Atom Last-link for feed paging and archiving.

   $feed->next_link ([ $uri ])
       The Atom Next-link for feed paging and archiving.

   $feed->previous_link ([ $uri ])
       The Atom Previous-link for feed paging and archiving.

   $feed->current_link ([ $uri ])
       The Atom Current-link for feed paging and archiving.

   $feed->next_archive_link ([ $uri ])
       The Atom Next-link for feed paging and archiving.

   $feed->prev_archive_link ([ $uri ])
       The Atom Prev-Archive-link for feed paging and archiving.

PACKAGE VARIABLES

       $XML::Feed::Format::RSS::PREFERRED_PARSER
           If you want to use another RSS parser class than XML::RSS (default), you can change
           the class by setting $PREFERRED_PARSER variable in the XML::Feed::Format::RSS package.

               $XML::Feed::Format::RSS::PREFERRED_PARSER = "XML::RSS::LibXML";

           Note: this will only work for parsing feeds, not creating feeds.

           Note: Only "XML::RSS::LibXML" version 0.3004 is known to work at the moment.

       $XML::Feed::MULTIPLE_ENCLOSURES
           Although the RSS specification states that there can be at most one enclosure per item
           some feeds break this rule.

           If this variable is set then "XML::Feed" captures all of them and makes them available
           as a list.

           Otherwise it returns the last enclosure parsed.

           Note: "XML::RSS" version 1.44 is needed for this to work.

VALID FEEDS

       For reference, this cgi script will create valid, albeit nonsensical feeds (according to
       "http://feedvalidator.org" anyway) for Atom 1.0 and RSS 0.90, 0.91, 1.0 and 2.0.

           #!perl -w

           use strict;
           use CGI;
           use CGI::Carp qw(fatalsToBrowser);
           use DateTime;
           use XML::Feed;

           my $cgi  = CGI->new;
           my @args = ( $cgi->param('format') || "Atom" );
           push @args, ( version => $cgi->param('version') ) if $cgi->param('version');

           my $feed = XML::Feed->new(@args);
           $feed->id("http://".time.rand()."/");
           $feed->title('Test Feed');
           $feed->link($cgi->url);
           $feed->self_link($cgi->url( -query => 1, -full => 1, -rewrite => 1) );
           $feed->modified(DateTime->now);

           my $entry = XML::Feed::Entry->new();
           $entry->id("http://".time.rand()."/");
           $entry->link("http://example.com");
           $entry->title("Test entry");
           $entry->summary("Test summary");
           $entry->content("Foo");
           $entry->modified(DateTime->now);
           $entry->author('test@example.com (Testy McTesterson)');
           $feed->add_entry($entry);

           my $mime = ("Atom" eq $feed->format) ? "application/atom+xml" : "application/rss+xml";
           print $cgi->header($mime);
           print $feed->as_xml;

LICENSE

       XML::Feed is free software; you may redistribute it and/or modify it under the same terms
       as Perl itself.

AUTHOR & COPYRIGHT

       Except where otherwise noted, XML::Feed is Copyright 2004-2008 Six Apart. All rights
       reserved.

SUPPORT

       For support contact the XML::Feed mailing list - xml-feed@perlhacks.com.

SOURCE CODE

       The latest version of XML::Feed can be found at

           http://github.com/davorg/XML-Feed