in reply to Re^3: How do I capture XML into a variable?
in thread How do I capture XML into a variable?

OMG OMG OMG.... thankyou for mentioning LWP... I did a little searching on perl.org and it's just what i wanted.... Thankyou, thankyou, thankyou...

ok.. here's what i did.

use LWP::Simple;
$scalar = get "http://www.frequencyyouth.blogspot.com/atom.xml";
@feed = split("\n", $scalar);

again... thankyou... i've been looking for that answer for ages...
  • Comment on Re^4: How do I capture XML into a variable?

Replies are listed 'Best First'.
Re^5: How do I capture XML into a variable?
by Tanktalus (Canon) on Apr 19, 2005 at 03:05 UTC

    First off, try using <code> tags for your code.

    Second, when dealing with XML, it's highly recommended to use an XML parser of some sort. My favourite is XML::Twig, but others exist. There probably is even a wrapper around the XML parsers that help parse RSS feeds. Once you've retrieved the data into your $scalar, you can put it into these parsers and be able to get the data you want much more easily.

    #!/usr/bin/perl -w use LWP::Simple; use XML::Twig; my $twig = XML::Twig->new(); $twig->parse(get 'http://www.frequencyyouth.blogspot.com/atom.xml'); my @entries = $twig->get_xpath('entry'); foreach my $entry (@entries) { my @title = $entry->get_xpath('title'); print "Found ", $_->text(), "\n" for @title; my @content = $entry->get_xpath('content'); print " -> ", $_->text(), "\n" for @content; }

      I guess it's time for the "obscure XML::Twig method of the day" link: you can also use the parseurlmethod to get the data directly.

      This would do the same thing your code does:

      #!/usr/bin/perl -w use strict; use XML::Twig; # to get the entries use YAML; # to dump the data # $entries is a reference to an array of entries # each entry contains { title => <title_text>, content => <content_tex +t> } my $entries=[]; my $twig = XML::Twig->new( twig_handlers => { entry => sub { store_ent +ry( $entries, @_); } } ) ->parseurl( "http://www.frequencyyouth.blogspot.co +m/atom.xml"); print Dump( $entries); exit; sub store_entry { my( $entries, $twig, $entry)= @_; push @$entries, { title => $entry->field( 'title'), content => $en +try->first_child( 'content')->xml_string }; }