Changeset 16254 for gsdl


Ignore:
Timestamp:
2008-07-01T10:23:34+12:00 (16 years ago)
Author:
mdewsnip
Message:

Fixed up some crazy XML parsing code and removed unnecessary hard-wiring of the different file types.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • gsdl/trunk/perllib/manifest.pm

    r11994 r16254  
    8686# Called for every start tag. The $_ variable will contain a copy of the
    8787# tag and the %_ variable will contain the element's attributes.
    88 sub xml_start_tag {
     88sub xml_start_tag
     89{
    8990    my $self = shift(@_);
    9091    my ($expat, $element) = @_;
    9192
    92     if ($_ =~ m/^<(Index|Reindex|Delete)>$/) {
    93     my $tag = $1;
    94     if (defined $self->{'file-type'}) {
    95         print STDERR "Warning: Malformed XML manifest.  ";
    96         print STDERR "$tag nested inside ", $self->{'file-type'}, "\n";
    97         print STDERR "         Changing file-type scope to $tag\n";
     93    if ($element eq "Filename")
     94    {
     95    $self->{'filename'} = "";
     96    }
     97    else
     98    {
     99    if (defined($self->{'file-type'}))
     100    {
     101        print STDERR "Warning: Malformed XML manifest ($element nested inside " . $self->{'file-type'} . ")\n";
    98102    }
    99103
    100     $self->{'file-type'} = lc($tag);
    101     }
    102     elsif ($_ eq "<Filename>") {
    103     $self->{'filename'} = "";
     104    $self->{'file-type'} = $element;
    104105    }
    105106}
    106107
    107108# Called for every end tag. The $_ variable will contain a copy of the tag.
    108 sub xml_end_tag {
     109sub xml_end_tag
     110{
    109111    my $self = shift(@_);
    110112    my ($expat, $element) = @_;
    111113
    112     if ($_ =~ m/^<\/(Index|Reindex|Delete)>$/) {
     114    if ($element eq "Filename")
     115    {
     116    $self->{lc($self->{'file-type'})}->{$self->{'filename'}} = 1;
     117    $self->{'filename'} = undef;
     118    }
     119    else
     120    {
    113121    $self->{'file-type'} = undef;
    114122    }
    115     elsif ($_ eq "</Filename>") {
    116     my $file_type = $self->{'file-type'};
    117     my $filename = $self->{'filename'};
    118 
    119     $self->{$file_type}->{$filename} = 1;
    120 
    121     $self->{'filename'} = undef;
    122     }
    123 
    124123}
    125124
Note: See TracChangeset for help on using the changeset viewer.