I have huge xml file. I have given below the part of problem area code.
The part of my xml data looks like this ..
<Company_Name>XYZ CMPNY</Company_Name><ArgId>775340</ArgId><First_Name
+>Carol & Jerry</First_Name>
I need only "Company_Name" and "First_Name". I have written perl code using XML::Parser. The code below
use strict;
use XML::Parser;
my $parser = new XML::Parser(ErrorContext => 2);
my $xmlStr = "<data>
<Company_Name>XYZ CMPNY</Company_Name>
<ArgId>775340</ArgId>
<First_Name>Carol & Jerry</First_Name>
</data>";
my $writeDataFlag = 0;
$parser->setHandlers(
Start => \&start_handler,
Char => \&char_handler,
End => \&end_handler);
$parser->parse($xmlStr);
sub char_handler
{
my ($p, $data) = @_;
if($writeDataFlag ==1 ){
print "Data - [$data] \n";
}
}
sub start_handler
{
my ($p, $data) = @_;
if($data =~ /^(Company_Name|First_Name)$/) {
$writeDataFlag = 1;
}
}
sub end_handler
{
my ($p, $data) = @_;
$writeDataFlag = 0;
}
1;
OUTPUT:
Company_Name ---> [XYZ CMPNY]
First_Name ---> [Carol ]
[&]
[ Jerry]
I need OTUPUT:
Company_Name ---> [XYZ CMPNY]
First_Name ---> [Carol & Jerry]
Please suggest me whats wrong with my code?
Thanks
Sivakumar