Hai I have a new challenge based on the XML. I have tried with various combination s but could not able to resolve it. So i request you guys to help me out on this.
*******************************INPUT XML********************************** <articleorder> <group> <article-ref rid="001-1"/> </group> <group> <article-ref rid="001-2"/> </group> <group> <article-ref rid="001-3"/> </group> <group> <article-ref rid="001-4"/> </group> <group> <group> <title><![CDATA[News of the Week]]></title> <article-ref rid="001-5"/> <article-ref rid="001-6"/> <article-ref rid="001-7"/> <article-ref rid="001-8"/> <article-ref rid="001-9"/> <article-ref rid="001-10"/> <article-ref rid="001-11"/> <article-ref rid="001-12"/> <article-ref rid="001-13"/> </group> </group> <group> <group> <title><![CDATA[News Focus]]></title> <article-ref rid="001-14"/> <article-ref rid="001-15"/> <article-ref rid="001-16"/> <article-ref rid="001-17"/> </group> </group> <group> <article-ref rid="001-18"/> </group> <group> <group> <title><![CDATA[Commentary]]></title> <title><![CDATA[Letters]]></title> <article-ref rid="001-19"/> <article-ref rid="001-20"/> <article-ref rid="001-21"/> <article-ref rid="001-22"/> <article-ref rid="001-23"/> <article-ref rid="001-24"/> <article-ref rid="001-25"/> <article-ref rid="001-26"/> </group> </group> <group> <group> <title><![CDATA[Commentary]]></title> <title><![CDATA[Books et al.]]></title> <article-ref rid="001-27"/> <article-ref rid="001-28"/> </group> </group> <group> <group> <title><![CDATA[Commentary]]></title> <title><![CDATA[Policy Forum]]></title> <article-ref rid="001-29"/> </group> </group> <group> <group> <group> <title><![CDATA[Commentary]]></title> <title><![CDATA[Policy Forum]]></title> <title><![CDATA[Policy Forum1]]></title> <article-ref rid="001-29A"/> </group> </group> <group> <group> <title><![CDATA[Commentary]]></title> <title><![CDATA[Perspectives]]></title> <article-ref rid="001-30"/> <article-ref rid="001-31"/> <article-ref rid="001-32"/> <article-ref rid="001-33"/> <article-ref rid="001-34"/> <article-ref rid="001-35"/> <article-ref rid="001-36"/> </group> </group> <group> <title><![CDATA[Research Article]]></title> <article-ref rid="001-37"/> </group> <group> <title><![CDATA[Reports]]></title> <article-ref rid="001-38"/> <article-ref rid="001-39"/> <article-ref rid="001-40"/> <article-ref rid="001-41"/> <article-ref rid="001-42"/> <article-ref rid="001-43"/> <article-ref rid="001-44"/> <article-ref rid="001-45"/> <article-ref rid="001-46"/> <article-ref rid="001-47"/> <article-ref rid="001-48"/> <article-ref rid="001-49"/> <article-ref rid="001-50"/> </group> <group> <article-ref rid="001-51"/> </group> </articleorder> ************************************************************************************* **********************OUTPUT XML******************************************** <group> <article-ref rid="001-1"/> <article-ref rid="001-2"/> <article-ref rid="001-3"/> <article-ref rid="001-4"/> <group> <title><![CDATA[News of the Week]]></title> <article-ref rid="001-5"/> <article-ref rid="001-6"/> <article-ref rid="001-7"/> <article-ref rid="001-8"/> <article-ref rid="001-9"/> <article-ref rid="001-10"/> <article-ref rid="001-11"/> <article-ref rid="001-12"/> <article-ref rid="001-13"/> </group> <group> <title><![CDATA[News Focus]]></title> <article-ref rid="001-14"/> <article-ref rid="001-15"/> <article-ref rid="001-16"/> <article-ref rid="001-17"/> </group> <article-ref rid="001-18"/> <group> <title><![CDATA[Commentary]]></title> <group> <title><![CDATA[Letters]]></title> <article-ref rid="001-19"/> <article-ref rid="001-20"/> <article-ref rid="001-21"/> <article-ref rid="001-22"/> <article-ref rid="001-23"/> <article-ref rid="001-24"/> <article-ref rid="001-25"/> <article-ref rid="001-26"/> </group> <group> <title><![CDATA[Books et al.]]></title> <article-ref rid="001-27"/> <article-ref rid="001-28"/> </group> <group> <title><![CDATA[Policy Forum]]></title> <article-ref rid="001-29"/> <group> <title><![CDATA[Policy Forum1]]></title> <article-ref rid="001-29A"/> </group> </group> <group> <title><![CDATA[Perspectives]]></title> <article-ref rid="001-30"/> <article-ref rid="001-31"/> <article-ref rid="001-32"/> <article-ref rid="001-33"/> <article-ref rid="001-34"/> <article-ref rid="001-35"/> <article-ref rid="001-36"/> </group> </group> <group> <title><![CDATA[Research Article]]></title> <article-ref rid="001-37"/> </group> <group> <title><![CDATA[Reports]]></title> <article-ref rid="001-38"/> <article-ref rid="001-39"/> <article-ref rid="001-40"/> <article-ref rid="001-41"/> <article-ref rid="001-42"/> <article-ref rid="001-43"/> <article-ref rid="001-44"/> <article-ref rid="001-45"/> <article-ref rid="001-46"/> <article-ref rid="001-47"/> <article-ref rid="001-48"/> <article-ref rid="001-49"/> <article-ref rid="001-50"/> </group> <article-ref rid="001-51"/> </group> ************************************************************************ I have tried using the Hash concept to resolve this. but could not able to fetch what is required. Any help would be greatly appreciated. This is the script that i have tried with. **********************SCRIPT********************************* use XML::LibXML; use Data::Dumper; my %data; my %hash; my $parser = XML::LibXML->new(); $xml = "group.xml"; eval{ $doc = $parser->parse_file($xml) or die("Cannot read the XML\n"); }; if($@){ print "ERROR: 2: ".$xml." ==>> XML Parse Error\n"; } else{ $root = $doc->getDocumentElement; foreach my $group ($root->findnodes('/articleorder/group')){ $title = $group->findvalue('./title'); $p = 0; print "TTTT--> ".$title."\n"; foreach my $art_ref($group->findnodes('./article-ref')){ $ref_id = $art_ref->findvalue('./@rid'); $p++; print "\tRef id --> ".$ref_id."\n"; #$hash{$title}{$p} = $ref_id; &ada($p,$ref_id,$title); } } # foreach my $group ($root->findnodes('//group/group')){ # foreach my $tit ($group->findnodes('./title')){ # my $title = $tit->findvalue('.'); # print "Title--> ".$title."\n"; # } # $i = 0; # foreach my $article_ref ($group->findnodes('./article-ref')){ # $i++; # my $ref_id = $article_ref->findvalue('./@rid'); # print "\tReference id --> $title --> ".$ref_id."\n"; # &ada($i,$ref_id,$title); # } # } } print (Dumper(\%hash)); sub ada(){ $item = shift; $value = shift; $t = shift; if($hash{group}{$t}{$item} eq ''){ $hash{group}{$t}{$item} = $value; } else{ $item++; &ada($item,$value,$t); } } *************************************************************** Chaitanya