in reply to Re^4: xml::twig gathering all element and att and its value question
in thread xml::twig gathering all element and att and its value question
It's not clear to me what you are trying to achieve here (assigning a hash ref to an array doesn't make sense), but the following may help:
use warnings; use strict; use XML::Twig; use Data::Dump::Streamer; my $xml = <<XML; <config> <computer id="one" type="mac" os="XP" > <lease true="yes" /> <extra_device value="scanner"/> <entertainment> <game id="tekken" company="nameco" /> <platform value="pc only" /> <year value="1980" /> <game id="tekken 2" company="ninja" /> <platform value="pc and mac" /> <year value="1989" /> </entertainment> </computer> <computer id="two" type="pc" os="NT" > <lease true="no" /> <work> <software value="final" /> </work> </computer> <company_name id="nameco" origin="ca" type="violence" production="ye +s"> <sponsor name="sony" percentage="30" active="true"/> <sponsorlist> <sponsor id="sony1" active="false"/> <sponsor id="sony2" active="true"/> <sponsor id="sony3" active="false"/> </sponsorlist> </company_name> <company_name id="ninja" origin="ny" type="extreme violence" product +ion="yes"> <sponsor name="WB" percentage="20" active="true"/> <sponsorlist> <sponsor id="WB1" active="false"/> </sponsorlist> </company_name> </config> XML my $yahoo = 'one'; my @ones; my $twig = XML::Twig->new ( pretty_print => 'indented', twig_roots => { computer => sub {oneHandler (\@ones, $yahoo, @_);} } ); $twig->parse ($xml); Dump (\@ones); sub oneHandler { my ($ones, $yabal, $twig, $elt) = @_; return unless $elt->att ('id') eq $yabal; for my $child ($elt->children ()) { my %atts = %{$child->atts ()}; next unless %atts; push @$ones, \%atts; } }
Prints:
$ARRAY1 = [ { true => 'yes' }, { value => 'scanner' } ];
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^6: xml::twig gathering all element and att and its value question
by convenientstore (Pilgrim) on Nov 12, 2008 at 19:49 UTC | |
by GrandFather (Saint) on Nov 12, 2008 at 20:10 UTC | |
by convenientstore (Pilgrim) on Nov 13, 2008 at 06:13 UTC | |
by convenientstore (Pilgrim) on Nov 16, 2008 at 02:48 UTC | |
by Anonymous Monk on Nov 16, 2008 at 04:23 UTC | |
by convenientstore (Pilgrim) on Nov 16, 2008 at 04:44 UTC |