{
'class' => 'myclass',
'set' => {
'key2' => 'b',
'key1' => 'a'
}
}
XML::Rules is simpler than XML::Simple, you start with xml2XMLRules, and you tweak it a little
#!/usr/bin/perl --
#~ 2012-05-02-20:44:05 by Anonymous Monk
#~ perltidy -csc -otr -opr -ce -nibc -i=4
use strict; use warnings;
use XML::Rules;
use Data::Dump qw/ dd /;
Main( @ARGV );
exit( 0 );
sub Main {
my $t = XML::Rules->new(
qw/ stripspaces 8 /,
rules => [
'obj' => 'as array no content',
'stuff' => 'no content',
#~ 'set' => 'as array', # original from xml2XMLRules
'set' => sub {
#~ $rule->( $tag_name, \%attrs, \@context, \@parent_data, $parser)
#~ my ($tagname, $attrHash, $contexArray, $parentDataArray, $parser) =
+ @_;
'%set', { $_[1]->{name} => $_[1]->{_content} };
},
],
);
my $res = $t->parse( MyXml() );
dd $res;
} ## end sub Main
sub MyXml {
q{<stuff name="me">
<obj class="myclass">
<set name="key1">a</set>
<set name="key2"></set>
</obj>
<obj class="myclass">
<set name="key1">a</set>
<set name="key2">b</set>
</obj>
</stuff>
};
} ## end sub MyXml
__END__
{
stuff => {
name => "me",
obj => [
{ class => "myclass", set => { key1 => "a", key2 => unde
+f } },
{ class => "myclass", set => { key1 => "a", key2 => "b"
+} },
],
},
}
|