use strict; use XML::Rules; my $xml = <<'*END*'; <?xml version='1.0'?> <employee> <name>John Doe</name> <age>43</age> <sex>M</sex> <department>Operations</department> </employee> *END* { my $parser = new XML::Rules ( rules => [ _default => 'content', employee => 'pass no content', ] ); my $result = $parser->parsestring($xml); use Data::Dumper; print Dumper($result); } { my $parser = new XML::Rules ( rules => [ _default => 'content', employee => sub {print "$_[1]->{name} is $_[1]->{age} years old and works in the $_[1]->{department} section\n"}, ] ); $parser->parsestring($xml); } print "\n\n"; { my $xml = <<'*END*'; <?xml version='1.0'?> <employees> <employee> <name>John Doe</name> <age>43</age> <sex>M</sex> <department>Operations</department> </employee> <employee> <name>Jane Doe</name> <age>31</age> <sex>F</sex> <department>Accounts</department> </employee> <employee> <name>Be Goode</name> <age>32</age> <sex>M</sex> <department>Human Resources</department> </employee> </employees> *END* my $parser = new XML::Rules ( rules => [ _default => 'content', employee => sub {print "$_[1]->{name}\nAge/Sex: $_[1]->{age}/$_[1]->{sex}\nDepartment: $_[1]->{department} section\n\n"}, ] ); $parser->parsestring($xml); }