Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
XML::Feed(3)	      User Contributed Perl Documentation	  XML::Feed(3)

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

	   use XML::Feed;
	   my $feed = XML::Feed->parse(URI->new(''))
	       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('');

       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:

       o   RSS 0.91

       o   RSS 1.0

       o   RSS 2.0

       o   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

       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, $format)
       Parses a	syndication feed identified by $stream and returns an
       XML::Feed object. $stream can be	any one	of the following:

       o   Scalar reference

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

       o   Filehandle

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

       o   File	name

	   The name of a file containing the feed XML.

       o   URI object

	   A URI from which the	feed XML will be retrieved.

       $format allows you to override format guessing.

       Gets a feed from	a 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.

       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.

       Converts	the XML::Feed object into the $format format, and returns the
       new object.

       Splices in all of the entries from the feed $other_feed into $feed,
       skipping	posts that are already in $feed.

       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:


       A string.

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

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

       Adds an entry to	the feed. $entry should	be an XML::Feed::Entry object
       in the correct format for the feed.

       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).


   $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.

	   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.

	   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.

       For reference, this cgi script will create valid, albeit	nonsensical
       feeds (according	to "" 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->title('Test Feed');
	   $feed->self_link($cgi->url( -query => 1, -full => 1,	-rewrite => 1) );

	   my $entry = XML::Feed::Entry->new();
	   $entry->title("Test entry");
	   $entry->summary("Test summary");
	   $entry->author(' (Testy McTesterson)');

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

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

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

       For support contact the XML::Feed mailing list -

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

perl v5.32.0			  2019-02-06			  XML::Feed(3)


Want to link to this manual page? Use this URL:

home | help