My XML file is like below:

<reference>
...
...
<title type="journal">Harv L R</title>
....
....
</reference>

My INI file info is like below:

Harv L R<TAB>Harvard Law Review
MLR<TAB>Modern Law Review


The required output is as follow:

<reference>
...
...
<title type="journal">Harvard Law Review</title>
....
....
</reference>


The <title> is present in other locations also. We have to modify only
titles which are child to <reference> and type="journal".

My code is like below:

use XML::XPath;
use XML::XPath::XMLParser;

$xp = XML::XPath->new(filename => 'mlr_648.xml');
$nodeset = $xp->find('//reference/[EMAIL PROTECTED]"journal"]');
foreach my $node ($nodeset->get_nodelist)
{
   $line=XML::XPath::XMLParser::as_string($node);
   if($line =~m!<title type="journal">(.*)</title>!)
   {
       $jb = $1;
   }
   &rep($jb);
}

sub rep
{
   $jabb = $jb;
   open(DAT, "mlr.dat");
   $/=undef;
   $x=<DAT>;
   while($x=~m!(.*)\t(.*)!ig)
   {
       %data = ("$1" => "$2");
       $jname = $data{$jabb};
       if($jname ne "")
       {
           print "<title type=\"journal\">$jname</title>\n";
       }
   }

}

I am getting required output. but I am unable to print entire XML with
the modification in a separate file. Please help in two cases.

1. Print an error message if the corresponding full name is not found.
2. Print entire XML to a separate file.

Regards,
Ganesh

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to