Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister

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

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

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

Sweet, that's exactly what I was looking for!

Thanks for the regex suggestions as well. I was actually trying the regex route before but it's something I haven't much luck with wrapping my head around so far.

Love the super fast replies here. You guys are great.

  • Comment on Re^2: extract tag content from VLC webserver via XML::Rules

Replies are listed 'Best First'.
Re^3: extract tag content from VLC webserver via XML::Rules
by rainforest1155 (Initiate) on Jun 25, 2013 at 17:12 UTC

    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.

      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://1040619]
choroba recommends ABSG to Discipulus
[erix]: yes, very handy that. I always use the one-page html version (dumped a local copy of it)
[erix]: (easier for searching)
choroba tries to grep -i choroba absg.html
[erix]: I count 3 (+1 in the list)-- wel done :)

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (9)
As of 2017-11-24 11:52 GMT
Find Nodes?
    Voting Booth?
    In order to be able to say "I know Perl", you must have:

    Results (348 votes). Check out past polls.