Not much discussion yet :-( Maybe it's the weekend. Maybe I did not explain it well enough. Anyway for now it seems that I WILL implement the module and see if it starts to get used. It'll sit on top of XML::Parser::Expat.
To allow the rules to both define attributes in the parent's structure and append/push to it's content I'll allow odd numbered lists, the last item will go into the _content.
Here's yet another set of rules to produce something similar to what would XML::Simple create:
%rules = (
_default => sub {
if (scalar(keys %{$_[1]}) == 1) {
return $_[0] => $_[1]->{_content}
} else {
return $_[0] => $_[1]
}
},
phone => sub {$_[1]->{type} => $_[1]->{content}},
phones => sub {delete $_[1]->{_content}; 'phones' => $_[1]},
);