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