hallo,
ich habe mehrere xml-dateien, die ich mit perl parse.
jetzt habe ich aber mitbekommen, dass ich gerade einmal ein viertel der datei parsen muss, der rest ist uninteressant. durch das parsen der restlichen zeilen geht aber eine menge zeit verloren ...
wie kann ich das parsen der datei an einem bestimmten öffnenden tag beenden?
der code sieht derzeit ungefähr so aus:
Parseraufruf:
for(my $j = 0;$j <= 8;$j++){
if (-e $Files[$j]){
if (-z $Files[$j]){
push(@noData , "d:/perl/test/".$Date."/".$i."/".$Files[$j]);
}
else{
# parse die aktuelle Datei
$testSuitName=$Files[$j];
$pParser -> parsefile($Files[$j]);
}
}
}
Subroutine:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
sub anfang{
my($p, $starttag, %attr) = @_;
# beginnt eine neue Datei?
if($starttag eq "testsuite") {
# gibt es Fehler oder Abbrüche?
if ($attr{errors} ne "0" or $attr{failures} ne "0"){
# neuer test-eintrag
print FILE "\t\t<testsuite name=\"$testSuitName\" time=\"$attr{timestamp}\">\n";
$openTestSuite = 1;
}
}
elsif ($starttag eq "testcase"){
$testCaseClass = $attr{classname};
$testCaseName = $attr{name};
}
elsif ($starttag eq "error"){
$attr{message} =~ tr/<>\"/[]'/;
if ($attr{message} eq "") {$attr{message} = "."};
print FILE "\t\t\t<error classname=\"$testCaseClass\" name=\"$testCaseName\" message=\"$attr{message}\" type=\"$attr{type}\" />\n";
}
elsif ($starttag eq "failure"){
$attr{message} =~ tr/<>\"/[]'/;
if ($attr{message} eq "") {$attr{message} = "."};
print FILE "\t\t\t<failure classname=\"$testCaseClass\" name=\"$testCaseName\" message=\"$attr{message}\" type=\"$attr{type}\" />\n";
}
}
kann mir bitte jemand helfen?
danke schonmal im voraus ... björn