Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

•Re: Slashdot headlines

by merlyn (Sage)
on May 29, 2002 at 18:00 UTC ( [id://170169]=note: print w/replies, xml ) Need Help??


in reply to Slashdot headlines

Here's a slightly simpler version that I whipped up in a few minutes, requiring XML::RSS and Template as well as LWP:
#!/usr/bin/perl -w use strict; my $SLASHCACHE = "/Users/merlyn/slashdot.rdf"; use LWP::Simple; use Template; mirror("http://slashdot.org/slashdot.rdf", $SLASHCACHE); my $t = Template->new; $t->process(\*DATA, { slashcache => $SLASHCACHE} ) or die $t->error; __END__ === Here's the news: [% USE news = XML.RSS(slashcache); FOREACH item = news.items; LAST IF loop.count > 10; -%] [% loop.count %]: [% item.title %] at [% item.link %] [% END -%] ===

-- Randal L. Schwartz, Perl hacker

Replies are listed 'Best First'.
Re: •Re: Slashdot headlines
by ajt (Prior) on May 29, 2002 at 18:51 UTC
    While merlyn's solution works well, I prefer a more XML native approach. The RDF file should be valid XML, in which case you only need apply an XSL Transformation to the file once you have it, to get valid XHTML, WML or whatever out.

    This is the basis of XML::RSS::Tools, a module I've been developing. Here is an example of the usage:

    #!/usr/bin/perl -w use strict; use XML::RSS::Tools; my $site = shift; my $xsl = shift; my $rss = XML::RSS::Tools->new; $rss->rss_uri($site) or die $rss->as_string('error'); $rss->xsl_file($xsl) or die $rss->as_string('error'); if ($rss->transform) { print $rss->as_string };

    There are however problems:

    • XML::RSS module has some defects
    • Perl before 5.7.x isn't exactly the best for working with Unicode
    • RSS feeds often are not valid XML - How do I clean RSS feeds to make them usable?
    • My module still has bugs in... :-(
    • UPDATE: Versions later than 0.05 have less bugs, and partially get round the defect in XML::RSS and dirty feeds

    My humble 2p

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://170169]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others surveying the Monastery: (5)
As of 2024-04-19 14:48 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found