
| Current Path : /var/www/web-klick.de/dsh/50_dev2017/1300__perllib/Cursor/ |
Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 |
| Current File : /var/www/web-klick.de/dsh/50_dev2017/1300__perllib/Cursor/xmlfile.pm |
package Cursor::xmlfile;
# $Author: gabriel $
# $Revision: 1.1 $
# $Date: 2007/06/04 09:07:58 $
# $Log: xmlfile.pm,v $
# Revision 1.1 2007/06/04 09:07:58 gabriel
# Initial
#
use strict;
use vars qw(@ISA);
use Cursor::buffered_cursor;
use FileHandle;
@ISA = qw(Cursor::buffered_cursor);
# Cursor, der eine xml-Datei in sinnvolle Einheiten zerlegt.
# Aufgespalten wird jeweils an einer schliessenden eckigen Klammer.
sub new {
my $class = shift;
my $self = {};
$self->{'FILE'} = shift;
$self->{'BLOCKLAENGE'} = shift;
if (!($self->{'BLOCKLAENGE'})) {
$self->{'BLOCKLAENGE'} = 30;
}
bless($self,$class);
return($self);
}
#**********************************************************************
sub restart1 {
my $self = shift;
if ($self->{'FILEHANDLE'}) {
$self->{'FILEHANDLE'}->close();
}
if ($self->{'TEXT'}) {
delete($self->{'TEXT'});
}
$self->{'FILEHANDLE'} = FileHandle->new("<".$self->{'FILE'});
if (!($self->{'FILEHANDLE'})) {
$self->{'TEXT'} = $self->{'FILE'};
$self->{'ZAEHLER'} = 0;
}
}
#***********************************************************************
sub next1 {
my $self = shift;
my $zaehler = 0;
my $ende = 1; # Moeglichkeit des Schleifenabbruchs
my $zeichen; my $zeile;
if ($self->{'FILEHANDLE'}) {
while (0 == 0) {
$zaehler = $zaehler + 1;
$zeichen = $self->{'FILEHANDLE'}->getc();
$zeile = $zeile . $zeichen;
if ($zeichen eq "\<") { $ende = 0; }
if ($zeichen eq "\>") { $ende = 1; }
last if ($zaehler > $self->{'BLOCKLAENGE'} and $ende);
}
} else {
$zeile = substr($self->{'TEXT'},0,$self->{'BLOCKLAENGE'});
$self->{'TEXT'} = substr($self->{'TEXT'},$self->{'BLOCKLAENGE'}+1);
if ($self->{'TEXT'} =~ /^(.*?\>)(.*)$/s) {
$zeile = $zeile . $1;
$self->{'TEXT'} = $2;
}
}
return(undef) if (length($zeile) == 0);
$zeile =~ s/\n//gs;
return($zeile);
}
#**********************************************************************
1;