hoppfrosch,
Below code should form the required data structure as mentioned by you in the question. By the way i cant commit that my code is the efficient answer. Other revered monks will be able to give you the answers in most efficient way
#!/usr/bin/perl
use strict;
use XML::Rules;
use Data::Dumper;
my $xml = q(<root>
<parent>p1 p2 <ch1>c1_1</ch1> p3 <ch2>c2</ch2> p4 <ch1>c1_2</ch1> p5
+</parent>
</root>);
my $parser = XML::Rules->new (
rules => [
root => 'no content',
parent => sub { $_[1]->{text} = $_[1]->{_content}, delete $_[1]
+->{_content}, return ($_[0] => [$_[1]] , [$_[0] => $_[1]])} ,
ch1 => 'content array',
ch2 => 'content array',
]
);
my $result = $parser->parsestring($xml);
print Dumper $result;
Regards,
Murugesan Kandasamy
use perl for(;;);