#!/usr/bin/perl
use XML::Parser;
@files = <$plrepository/*.xml>;
foreach $xmlfile (@files) {
#something is omitted
$p2 = new XML::Parser(Handlers => {Start => \&handle_start,
End => \&handle_end,
Char => \&handle_char});
$p2->parsefile($xmlfile);
}
sub handle_start {
my ($pkg,$element,%attr) = @_;
$current_element = $element;
if ( $element =~ /Header/i ) {
$Number=$attr{Number};
open (OUT, ">$outputfile") or die "No file";
}
elsif ( $element =~ /ContentElement/i )
{
$IdNumber=$attr{IdNumber};
$InstanceNumber=$attr{InstanceNumber};
}
$Number=''; # I empty the variable for the next Number in the file
$IdNumber='';
$InstanceNumber='';
#something is omitted
}
sub handle_end {
my ($pkg,$element,%attr) = @_;
if ( $element =~ /Header/i ) {
print OUT $Number,"$separator\n";
print "\tNumber ". $Number . "\n";
close (OUT);
}
elsif ( $element =~ /ContentElement/i )
{
print OUT $IdNumber,"$separator\n";
print "\tIDNumber ". $IdNumber . "\n";
print OUT $InstanceNumber,"$separator\n";
print "\tIstanceNumber ". $InstanceNumber . "\n";
close (OUT);
}
$Number=''; # I empty the variable for the next Number in the file
$IdNumber='';
$InstanceNumber='';
#something is omitted
}
sub handle_char {
my $text = $_[1];
if ( $current_element =~ /^Number$/i ) {
($text !~ /^\s*$/) && ($Number .= $text);
#|-> buffer text
}
if ( $current_element =~ /^IdNumber$/i ) {
($text !~ /^\s*$/) && ($IdNumber .= $text);
#|-> buffer text
}
if ( $current_element =~ /IstanceNumber/i ) {
($text !~ /^\s*$/) && ($IstanceNumber .= $text);
#|-> buffer text
}
#something is omitted
}
####
AC_1234,
yyyyyyyy-yy,01463010000016
zzzzzzzz-zz,0000000000000000
xxxxxxxx-xx,111111111111111
aaaaaaaaa-aa,222222222222222
####
AC_1234,
yyyyyyyy-yy,01463010000016
zzzzzzzz-zz,0000000000000000
xxx-xx,111111111111111
aaaaaaaaa-aa,22222
####
AC_1234,
yyyyyyyy-yy,01463010000016
zzzzzzzz-zz,0000000000000000
xxxxxxxx-xx,111111111111111
xxxxxxxx-xxaaaaaaaaa-aa,222222222222222111111111111111