in reply to XML::DT and hashes/pointers
use XML::DT;
use Data::Dumper;
my $filename = shift;
%handler=(
'-type' => {
top_level => 'MAP', #
sub_level_1 => 'SEQ', # of element (1)
# name => 'STR', # the default
# junk => 'STR', # the default
element => 'MAP' }, # (2)
'-default' => sub{$c},
element => sub{ $c->{name} = $v{name}; $c}, # (3)
sub_level_1 => sub{ +{ map { ($_->{name}, $_) } @$c } }, # (4)
);
print Dumper(dt($filename,%handler));
__END__
________notes:
(1) See also SEQH instead of SEQ
(2) beeing a MAP the attributes and the tagname are deleted => in this case
we can add a element processing sub (see (3))
(3) $c is the ref to hash; "name" att is missing but it is available in %v
In this sub we copied it
# or if you prefer:
# element => sub{ +{ %v, %$c}}, #add all atts in %v to $c
(4) we have a list of ref to hash and we want a hash of hash
for all the elements in @$c
make a pair with the name value, and the complete element
Um abraco
J.Joao (jj@di.uminho.pt)
|
|---|