+sub do_xml_schedule {
+ my $file = shift if (defined $_[0] and $_[0] !~ /^\d/);
+ my ($output, $writer);
+ if($file) {
+ $output = new IO::File(">$file");
+ $writer = new XML::Writer(OUTPUT => $output, DATA_MODE => 1);
+ } else {
+ $writer = new XML::Writer(DATA_MODE => 1);
+ }
+ my @schedule = get_schedule(@_);
+ $writer->startTag("schedule");
+ foreach my $class (@schedule) {
+ $writer->startTag("class");
+ foreach my $key (sort keys %$class) {
+ $writer->dataElement($key, $class->{$key});
+ }
+ $writer->endTag("class");
+ }
+ $writer->endTag("schedule");
+ $writer->end();
+ close $output if $file;
+}
+