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

Unfortunately all you have done is confuse the situation further. You're not going to get very far if you can't figure out what your question actually is. Ask yourself these:

  1. What, specifically do you mean when you say "loaded into an array." What do you want this array to look like? How do you intend to use it?
  2. What is "atom.xml"? Is this a local file? Is it on a remote server somewhere?
  3. What do you intend to do with atom.xml once you have it? Perhaps "loading into an array" is not the ideal solution and the people here can suggest something better. There are a plethora of modules out there for parsing XML.

A good bet is that a lot of the people who can answer your questions don't know what Blogger is or how it works. (I sure don't.) So explain exactly what you need.

  • Comment on Re^3: How do I capture XML into a variable?

Replies are listed 'Best First'.
Re^4: How do I capture XML into a variable?
by tubes41 (Initiate) on Apr 19, 2005 at 01:48 UTC
    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...

      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 }; }