Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Re: trying to understand xml::twig and also trying to learn how to extract attribute

by GrandFather (Saint)
on Nov 04, 2008 at 23:27 UTC ( [id://721530]=note: print w/replies, xml ) Need Help??


in reply to trying to understand xml::twig and also trying to learn how to extract attribute

You're not a long way away from what you need to do. twig_roots supplies a reference to a sub to handle matching elements. Consider:

use warnings; use strict; use XML::Twig; my $xmlStr = <<XML; <config> <one id="msn" type="shopping"> <traffic> <daily value="on" /> <weekly value="off" /> <monthly value="off" /> </traffic> </one> <one id="movies" type="entertainment"> <traffic> <daily value="on" /> <weekly value="off" /> <monthly value="on" /> </traffic> </one> <one id="espn" type="sports"> <traffic> <daily value="on" /> <weekly value="on" /> <monthly value="on" /> <hyper value="true" /> </traffic> </one> </config> XML my $result = ''; my $twig = XML::Twig->new (twig_roots => {one => sub {oneHandler (\$re +sult, @_);}}); $twig->parse ($xmlStr); print $result; sub oneHandler { my ($resRef, $twig, $elt) = @_; $$resRef = join ' ', $$resRef, $elt->att ('id'); return; }

Prints:

msn movies espn

Note that there were a few missing close " in your sample XML that I've fixed.

Also notice that I created an anonymous sub so I could pass extra parameters into the handler thus avoiding the need for global variables.


Perl reduces RSI - it saves typing

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others taking refuge in the Monastery: (5)
As of 2024-04-25 14:00 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found