1.5.7
XXX Ltd
REG
DDDD
Timbuctu
000
1111
abc
XXX
XXX
XXX
0.00
5.05
YYY
7.0000
72.1168
5.05
77.17
XXX
XXX
77.17
XXXX
Cash
Payment received on or after YYY
WWWW
ZZZZ
MR SAMPLE_CUST
GROSS AVENUE 1
#9999-9999
Timbuctu XXXX
Market Summary
72.1168
MR SAMPLE_CUST_
XXX
10.0000
42.0968
20.0200
0.0000
0.0000
72.1168
0
GGG
999999
MR SAMPLE_CUST
72.1168
XXX
GGG
G
GGG800
10.0000
GGG
10.0000
G
GGG800
13.0968
9999-10-01
9999-10-14
G
GGG800
29.0000
9999-10-15
9999-11-14
Charges
42.0968
purchase1
G
purchase1
10.020
Purchase2
G
Purchase2
10.000
G
1633
XXX XXX
purchase1
2
Unit
10.0200
G
1633
XXX XXX
Purchase2
1
Unit(s)
10.0000
Charges
9999-01-01 to 9999-01-31
20.0200
purchase1
purchase1
Sub-Total for Purchase Details
20.0200
G
9999-10-04
10.0000
G
9999-10-04
0.0200
G
9999-10-02
10.0000
1
77.17
1
####
use strict;
use warnings;
use XML::Parser;
use Data::Dumper;
use List::Util qw(max);
my $file_name;
my @file_name1;
my $fp1;
my $xml_string;
my $pkg_txt;
my $got_ebook=0;
my $call_grp_info = 0;
my $CallDetailByService_cntr=0;
my $output_file_fp;
sub handle_end_xcd
{
my ( $expat, $element, %attrs ) = @_;
my $line = $expat->current_line;
my @parent_item_array=$expat->context;
my $parent_tag=$parent_item_array[-1];
print $output_file_fp " IN END Element Found $element\n";
if ($element eq 'CallGroupInfo')
{
if ($got_ebook == 1)
{
print STDOUT "$xml_string\n";
}
}
else
{
print STDOUT "$xml_string\n";
}
}
sub handle_start_xcd
{
my ( $expat, $element, %attrs ) = @_;
my $line = $expat->current_line;
my @parent_item_array=$expat->context;
my $parent_tag=$parent_item_array[-1];
if ( ($element eq 'CallGroupInfo') && ($got_ebook > 1 ) )
{
$call_grp_info++;
print $output_file_fp "in IF $call_grp_info\n";
if ($call_grp_info == 1)
{
print STDOUT "$xml_string\n";
}
}
elsif ($element eq "CallDetailByService")
{
$CallDetailByService_cntr++;
if ($CallDetailByService_cntr > 1)
{
print STDOUT "$xml_string\n";
}
}
elsif ($element eq "CallGroupDescription")
{
print STDERR "XXX\n";
}
else
{
print STDOUT "$xml_string\n";
}
}
sub char_handler
{
my ($p, $data) = @_;
print $output_file_fp "Char handler", $p->current_element, "\n";
if ($p->current_element eq "SDPackageName")
{
chomp $data;
# print STDERR "Package Data is:$data\n";
$got_ebook++ if ( ($data eq "eMagazine Purchase") || ($data eq "eBook Purchase") ) ;
print STDOUT "$xml_string\n";
}
else
{
print STDOUT "$xml_string\n";
}
} # End char_handler
@file_name1=glob("org1.xml");
my $output_file_name="test.xml";
open ($output_file_fp,">", $output_file_name);
my $p1 = XML::Parser->new (
Handlers => {
Start => \&handle_start_xcd,
Char => \&char_handler,
End => \&handle_end_xcd
}
) ;
foreach (@file_name1)
{
$file_name = $_;
chomp $file_name;
open($fp1,"<",$file_name);
while(<$fp1>)
{
chomp;
$xml_string=$_;
#print $output_file_fp "$xml_string";
chomp $xml_string;
if ( grep ( /SDPackageName/, $xml_string) || grep ( /CallGroupInfo/ ,$xml_string) || grep ( /CallDetailByService/ ,$xml_string )
|| grep ( /CallGroupDescription/ ,$xml_string ))
{
$p1->parse($xml_string);
}
else
{
print STDOUT "$xml_string\n";
}
}
}
####
no element found at line 1, column 51, byte 51 at D:/Dwimperl/perl/vendor/lib/XML/Parser.pm line 187