2 use XML
::Parser
::PerlSAX
;
4 die "usage: NormalizeExcelXml.pl <filename>\n" unless (@ARGV == 1);
8 die "$filename not found\n" unless (-e
$filename);
9 die "$filename not writable\n" unless (-w
$filename);
11 $backup = $filename . "~";
13 die "Could not rename $filename -> $backup\n" unless (rename ($filename, $backup));
16 open (INFILE
, "<$backup");
17 open (OUTFILE
, ">$filename");
22 my $handler = MyHandler
->new();
23 my $parser = XML
::Parser
::PerlSAX
->new( Handler
=> $handler );
26 print "<?xml version=\"1.0\"?>";
27 $parser->parse(Source
=> { ByteStream
=> \
*INFILE
});
57 return bless ($self, $type);
62 my ($self, $element) = @_;
63 my $name = $element->{Name
};
65 if (exists $bad_elements{$name})
70 if ($quiet_level == 0)
79 print "\n$indent_level";
84 foreach $z (keys %{$element->{Attributes
}})
86 if (!exists $bad_attributes{$z})
89 print " " . $z . '="';
91 $_ = $element->{Attributes
}->{$z};
106 #$indent_level = $indent_level . ' ';
118 my ($self, $element) = @_;
119 my $name = $element->{Name
};
121 if ($quiet_level == 0)
125 if ($open_tag eq $name)
131 if (!$opened && !$in_cell)
133 print "\n$indent_level";
148 if (exists $bad_elements{$name})
155 my ($self, $characters) = @_;
157 $_ = $characters->{Data
};
166 if (!$open_tag eq "")