You can do it with XML::Smart like so:
use strict ;
use XML::Smart ;
my $xml = join( '', <DATA> ) ;
my $xml_obj = XML::Smart->new( $xml );
$xml_obj = $xml_obj->{ 'press-release' }{ 'PromoModuleOne' }{ 'RightCo
+loumn' }{ Tabs } ;
foreach my $tab ( @{ $xml_obj } ) {
print $tab->{ TabName }->content() ." \n" ;
foreach my $links ( @{ $tab->{ Links } } ) {
print $links->{ AssetTitle } . "\n" ;
print $links->{ AssetSource } . "\n" ;
print $links->{ AssetLink } . "\n" ;
print "#" x 50 ;
print "\n";
}
print "*" x 50 ;
print "\n";
}
__DATA__
<press-release>
<PromoModuleOne>
<ModuleBackgroundImage>images/section_bg.png</ModuleBackground
+Image>
<ColorCode>BLUE</ColorCode>
<LeftColoumn>
<PromoImage>XXXXXX</PromoImage>
<HeadingImage>XXXXXX</HeadingImage>
<PromoLink>XXXXXX</PromoLink>
<PromoText>XXXXXX</PromoText>
</LeftColoumn>
<RightColoumn>
<Tabs>
<TabName>XXXX</TabName>
<Links>
<AssetTitle>asd</AssetTitle>
<AssetSource>asdasd</AssetSource>
<AssetLink>asdsadasd</AssetLink>
</Links>
<Links>
<AssetTitle>sadas</AssetTitle>
<AssetSource>asdsa</AssetSource>
<AssetLink>dasdas</AssetLink>
</Links>
</Tabs>
<Tabs>
<TabName>XXXX</TabName>
<Links>
<AssetTitle>dsfsdfds</AssetTitle>
<AssetSource>dsfds</AssetSource>
<AssetLink>sdfdsfsdf</AssetLink>
</Links>
</Tabs>
</RightColoumn>
</PromoModuleOne>
</press-release>
OUTPUT:
XXXX
asd
asdasd
asdsadasd
##################################################
sadas
asdsa
dasdas
##################################################
**************************************************
XXXX
dsfsdfds
dsfds
sdfdsfsdf
##################################################
**************************************************