http://www.perlmonks.org?node_id=862589

hoppfrosch has asked for the wisdom of the Perl Monks concerning the following question:

Hi, I've got a simple xml:
<root> <parent>p1 p2 <ch1>c1_1</ch1> p3 <ch2>c2</ch2> p4 <ch1>c1_2</ch1> p5 +</parent> </root>
What I want to do is parsing this into a hash:
'root' => { 'parent' => [ { 'text' => 'p1 p2 p3 p4 p5' 'ch2' => [ 'c2' ], 'ch1' => [ 'c1_1', 'c1_2' ] } ] }
What I tried is (with XML::Rules):
my $parser = XML::Rules->new ( rules => [ root => 'no content', parent => 'no content array', ch1 => 'content array', ch2 => 'content array', ] ); my $result = $parser->parsestring($xml);
What I cannot figure out yet, is howto parse the "contents" of tag <parent> (I have to consider "p1 p2 "." p3 "." p4 "." p5" as content for some reason) into a child "text" of the item "parent" in my (desired) hash .... I tried several things like
# different Rule for "parent" parent => sub {$_[0]->{text} => $_[1]->{_content}},
but had no success yet ... (It's clear that above syntax does not make sense - but I think it expresses what I want to achieve)
Any help welcome!