#!/usr/bin/perl -w use strict; use warnings; use XML::Rules; my %data; my @rules = ( my $id; #$id will be the _content of DISPLAY after the Property Name my $var; #$var will be the _content of DISPLAY PROPERTY => sub { if ($_[1]{NAME} eq "id"){ $data{$id} = {}; } else ($data{$id} = {$_[1]{NAME} => $var}) } }, DISPLAY => sub {#some code to initialize $var}; my $xr = XML::Rules->new( rules => \@rules, stripspaces => 2 ); $xr->parse();