Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask

Re^3: extract tag content from VLC webserver via XML::Rules

by rainforest1155 (Initiate)
on Jun 25, 2013 at 17:12 UTC ( #1040632=note: print w/replies, xml ) Need Help??

in reply to Re^2: extract tag content from VLC webserver via XML::Rules
in thread extract tag content from VLC webserver via XML::Rules

Okay, I'm stuck again. I can print the now_playing content just fine, but that's not really my intention. I would like to use the data further down the line, but can't seem to get it out of the XML-Rules parser section.

I tried to populate a string called $nowplaying with it but outside of the parser section, the string prints just empty. Obviously, the print is again just temporary so I can see that it works before I continue.

How do I get the string contents outside of the parser section? Here's what I have:

my $nowplaying = ""; my $parser = XML::Rules->new( stripspaces => 7, rules => { info => sub { $nowplaying = $_[1]->{_content} if $_[1]->{name} eq 'now_playing'; return ; } } ); $parser->parse($streaminfo); print $nowplaying;

I'm sure it's again something real simple I'm missing here.

Replies are listed 'Best First'.
Re^4: extract tag content from VLC webserver via XML::Rules
by vagabonding electron (Deacon) on Jun 25, 2013 at 18:19 UTC

    Just change the line

    $nowplaying = $_[1]->{_content}


    $nowplaying .= $_[1]->{_content}

    You just missed the contatenation sign. :-)

    Update: Another way could be to populate a data structure with this content, e.g. push @array,$_[1]->{_content} if ... where @array is declared outside the parser.

    Update 2:After some thoughts: in fact your version works for me in the presented example too. However I reckon that you have more than one xml in your real script so that the content is lost if you have <info name="now_playing"/>somewhere later (though you should get a warning "Use of uninitialized value" - both in original and contatenation versions (in your OP you have not "use warnings" on).

      I'm fairly new to Perl also and had a question very similar to yours - I was attempting to extract certain tags and values out of an atom feed. The discussion thread, with several examples provided, can be found here:

      I recommend the example posted by POJ as it allows you to extract values based on the tag using Rules. Very handy.


      Adding the contatenation sign did the trick, thanks!

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (3)
As of 2021-03-01 20:19 GMT
Find Nodes?
    Voting Booth?
    My favorite kind of desktop background is:

    Results (22 votes). Check out past polls.