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

FreeBSD Manual Pages

  
 
  

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

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:

       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
       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:

       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.

   XML::Feed->get_uri($uri)
       Gets a feed from	a URI.

   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

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

NAME | SYNOPSIS | DESCRIPTION | USAGE | PACKAGE VARIABLES | VALID FEEDS | LICENSE | AUTHOR & COPYRIGHT | SUPPORT | SOURCE CODE

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=XML::Feed&sektion=3&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help