Hi Leute,
ich möchte eine XML-Datei einlesen. Diese ist so aufgebaut:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE profildtd SYSTEM "newsdtd.dtd">
<news>
<newsservice>
<name>AFP</name>
</newsservice>
<newsservice>
<name>ANSA</name>
</newsservice>
...
</news>
Dieses Skript besteht aus 46 Zeilen. Es ist so aufgebaut, dass die Anzahl der Zeilen - 4 durch drei teilbar ist. Daher habe ich folgendes Skript:
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
35
36
use strict;
use warnings;
our @av_news;
my $rw = open(FILE,'E:\Eigene Dateien\Programme\Scrutator\news.xml');
our @news = <FILE>;
our $newslength = @news;
if(($newslength - 4) % 3 == 0) {
for(my $i = 4;$i < $newslength;$i += 3) {
my $langstring = substr($news[$i],10);
for(my $j = 0;$j < 8;$j++) {
chop($langstring);
}
my $length = @av_news;
$av_news[$length] = $langstring;
}
} else {
}
close(FILE);
1;
Wie ihr seht, überprüfe ich mit
if(($newslength - 4) % 3 == 0)
, ob die oben genannte Bedingung erfüllt ist. Lasse ich nun @av_news; und @news; mit print() ausgeben, erhalte ich folgende Ausgabe:
14
46
Ich weiß auch woher diese Zahlen kommen: 46 ist die Anzahl der Zeilen. 46 - 4 = 42. 42 : 3 = 14. Allerdings sollte @news; die ganze Datei ausgeben und @av_news die zugeschnittenen einzelnen Zeilen.
Ich hab das vorher schon mit anderen XML-Dateien gemacht und da hatte ich noch keine ähnlichen Probleme.
Weiß jemand, wo hier das Problem liegt? Grüble schon seit Tagen darüber, aber egal was ich gemacht habe, nix hat gefunzt.
Gruß
TheDHK