Populated Bestine Capitol Building with missing NPCs. Also spawns several other missi...
[swg-src.git] / tools / NormalizeExcelXml.pl
blob05448c2ce83035d7002e1f34701a19aaa644a1e7
1 #!/usr/bin/perl -i
2 use XML::Parser::PerlSAX;
4 die "usage: NormalizeExcelXml.pl <filename>\n" unless (@ARGV == 1);
6 $filename = $ARGV[0];
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");
19 select(OUTFILE);
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 });
31 package MyHandler;
34 sub new {
35 my ($type) = @_;
36 my $self = {};
38 $quiet_level = 0;
39 $opened = 0;
40 $indent_level = "";
41 $open_tag = "";
43 $in_cell = 0;
45 %bad_elements =
47 "NamedCell", 1,
48 "Styles", 1,
51 %bad_attributes =
53 "ss:StyleID", 1,
54 "ss:AutoFitWidth", 1,
57 return bless ($self, $type);
60 sub start_element
62 my ($self, $element) = @_;
63 my $name = $element->{Name};
65 if (exists $bad_elements{$name})
67 $quiet_level += 1;
70 if ($quiet_level == 0)
72 if (!$open_tag eq "")
74 print ">";
77 if (! $in_cell )
79 print "\n$indent_level";
82 print "<$name";
84 foreach $z (keys %{$element->{Attributes}})
86 if (!exists $bad_attributes{$z})
89 print " " . $z . '="';
91 $_ = $element->{Attributes}->{$z};
93 s/\"/&quot;/g;
94 s/</&lt;/g;
95 s/>/&gt;/g;
97 print $_;
99 print '"';
104 $open_tag = $name;
106 #$indent_level = $indent_level . ' ';
107 $opened = 1;
109 if ($name eq "Cell")
111 $in_cell = 1;
117 sub end_element {
118 my ($self, $element) = @_;
119 my $name = $element->{Name};
121 if ($quiet_level == 0)
123 #chop $indent_level;
125 if ($open_tag eq $name)
127 print "/>";
129 else
131 if (!$opened && !$in_cell)
133 print "\n$indent_level";
136 print "</$name>";
139 $open_tag = "";
140 $opened = 0;
143 if ($name eq "Cell")
145 $in_cell = 0;
148 if (exists $bad_elements{$name})
150 $quiet_level -= 1;
154 sub characters {
155 my ($self, $characters) = @_;
157 $_ = $characters->{Data};
158 chomp;
160 if (/\S/)
162 s/\"/&quot;/g;
163 s/</&lt;/g;
164 s/>/&gt;/g;
166 if (!$open_tag eq "")
168 print ">";
169 $open_tag = "";
172 print $_;