Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW

Parsing Item Tag from RSS feed

by mr_p (Scribe)
on Jul 12, 2010 at 14:43 UTC ( #849024=perlquestion: print w/replies, xml ) Need Help??
mr_p has asked for the wisdom of the Perl Monks concerning the following question:

Hi All,

I was trying to parse Item tag with regEx but I am having problems because $capture->{_content} as a string is being translated to some other characterset. So, I am trying to pull out <item> tag using below method and I keep getting this error. Can someone please let me know why?

Error: XPathContext: lost current node at line 30

#!/usr/bin/perl -w #use strict; use warnings; use XML::RSS::LibXML; use XML::LibXML; use LWP::UserAgent; use Data::Dumper; #my ( $htmlInfile, $htmlOutfile, $cssOutfile ) = @ARGV; my $html_link = ""; my $parser = XML::LibXML->new; my $client = LWP::UserAgent->new(); my $capture = $client->get("$html_link") || die"$!\n"; useLibXmlParseXmlItems($capture->{_content}); sub useLibXmlParseXmlItems { my $rss = XML::RSS::LibXML->new; $rss->parse($_[0]) || die "Could not parse. <$!>"; my $xp = XML::LibXML::XPathContext->new($rss); my @nodes = $xp->findnodes("/rss/channel/item"); #print @nodes; }

Replies are listed 'Best First'.
Re: Parsing Item Tag from RSS feed
by Corion (Pope) on Jul 12, 2010 at 15:14 UTC

    Why are you accessing $capture->{_content} ? What is it supposed to contain? Where in LWP::UserAgent is it documented?

      I don't see any documentation on it..but $capture->{_content} is the whole webpage.

        Except it is not in a character set that you want.

        Maybe you want to use ->decoded_content instead?

      can you look at my code and tell me why the Xpath is not working in my code? Why I get the error message? Thanks for your help.

        You are making things up that do not at all match any kind of documentation. That's not how programming works.

        The following code works for me, and all I needed to do was to read the documentation of XML::LibXML.

        #!/usr/bin/perl -w use strict; use warnings; use XML::LibXML; my $html_link = ""; my $dom = XML::LibXML->load_xml(location => $html_link); my $xp = XML::LibXML::XPathContext->new($dom); my @nodes = $xp->findnodes("/rss/channel/item"); print $_->toString for @nodes;

        As you haven't told us why you use XML::RSS::LibXML, I have removed it from the code.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://849024]
Approved by Ratazong
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (8)
As of 2017-12-18 18:48 GMT
Find Nodes?
    Voting Booth?
    What programming language do you hate the most?

    Results (495 votes). Check out past polls.