|
NAMEXML::Feed - Syndication feed parser and auto-discoverySYNOPSISuse 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/'); DESCRIPTIONXML::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:
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. USAGEXML::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:
$format allows you to override format guessing. XML::Feed->get_file($filename)Gets a feed from a file.CML::Feed->get_fh($fh) Gets a feed from pre-opened filehandle. 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->formatReturns 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->entriesA list of the entries/items in the feed. Returns an array containing XML::Feed::Entry objects.$feed->itemsA 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_xmlReturns 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
VALID FEEDSFor 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; LICENSEXML::Feed is free software; you may redistribute it and/or modify it under the same terms as Perl itself.AUTHOR & COPYRIGHTExcept where otherwise noted, XML::Feed is Copyright 2004-2008 Six Apart. All rights reserved.SUPPORTFor support contact the XML::Feed mailing list - xml-feed@perlhacks.com.SOURCE CODEThe latest version of XML::Feed can be found athttp://github.com/davorg/XML-Feed
Visit the GSP FreeBSD Man Page Interface. |