greenstone.org greenstone wiki greenstone trac planet greenstone

Changeset 16254

Show
Ignore:
Timestamp:
2008-07-01 10:23:34 (5 months ago)
Author:
mdewsnip
Message:

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

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • 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