XML parsen
Hallo
Ich soll folgende XML-Datei parsen:
----begin artikel.xml----
<?xml version=3D"1.0" encoding=3D"utf-8"?>
<zeilen>
<zeile>
<text>Text, der analysiert werden soll</text>
<kodierung variable=3D"125" />
<kodierung variable=3D"223" />
</zeile>
<zeile>
<text>Auch dieser Text wird kodiert</text>
<kodierung variable=3D"321" />
<kodierung variable=3D"233" />
</zeile>
</zeilen>
----end artikel.xml---
Dazu habe ich im wesentlichen folgendes Skript geschrieben:
----begin skript.pl----
#!/usr/bin/perl
use XML::Simple;
my $data=3DXMLin($ARGV[0]);
foreach my $zeile ( [at] {$data -> {"zeile"}}) {
print $zeile->{"text"}."\n";
foreach my $kodierung ( [at] {$zeile -> {"kodierung"}}) {
print $kodierung->{"variable"} . "\n"
}
print "\n";
}
----end skript.pl----
Soweit so gut -- funktioniert. Nur kommen auch andere Eintr=C3=A4ge in den
Ausgangsdaten vor. Beispielsweise:
----begin artikel.xml----
<?xml version=3D"1.0" encoding=3D"utf-8"?>
<zeilen>
<zeile>
<text>Text, der analysiert werden soll</text>
<kodierung variable=3D"223" />
</zeile>
<zeile>
<text>Auch dieser Text wird kodiert</text>
<kodierung variable=3D"321" />
<kodierung variable=3D"233" />
</zeile>
</zeilen>
----end artikel.xml---
Daraufhin bekomme ich die Fehlermeldung
"Not an ARRAY reference at ./skript.pl line 7".
Wie l=C3=B6se ich das Problem?
Danke,
Christian Andersen
Re: XML parsen (gelöst)
Hallo nochmals
Entschuldigt bitte mein voriges, etwas voreiliges Posting. Ich habe die
L=C3=B6sung gefunden:
Am Mittwoch, den 22.11.2006, 15:02 +0100 schrieb Christian Andersen:
> Hallo
>
> Ich soll folgende XML-Datei parsen:
>
> ----begin artikel.xml----
> <?xml version=3D"1.0" encoding=3D"utf-8"?>
> <zeilen>
> <zeile>
> <text>Text, der analysiert werden soll</text>
> <kodierung variable=3D"125" />
> <kodierung variable=3D"223" />
> </zeile>
>
> <zeile>
> <text>Auch dieser Text wird kodiert</text>
> <kodierung variable=3D"321" />
> <kodierung variable=3D"233" />
> </zeile>
>
> </zeilen>
> ----end artikel.xml---
>
>
> Dazu habe ich im wesentlichen folgendes Skript geschrieben:
>
> ----begin skript.pl----
> #!/usr/bin/perl
> use XML::Simple;
>
> my $data=3DXMLin($ARGV[0]);
my $data=3DXMLin($ARGV[0],ForceArray=3D>[kodierung]);
damit funktioniert das Skript f=C3=BCr alle Daten.
> foreach my $zeile ( [at] {$data -> {"zeile"}}) {
> print $zeile->{"text"}."\n";
> foreach my $kodierung ( [at] {$zeile -> {"kodierung"}}) {
> print $kodierung->{"variable"} . "\n"
> }
> print "\n";
> }
> ----end skript.pl----
>
>
> Soweit so gut -- funktioniert. Nur kommen auch andere Eintr=C3=A4ge in de=
n
> Ausgangsdaten vor. Beispielsweise:
>
> ----begin artikel.xml----
> <?xml version=3D"1.0" encoding=3D"utf-8"?>
> <zeilen>
> <zeile>
> <text>Text, der analysiert werden soll</text>
> <kodierung variable=3D"223" />
> </zeile>
>
> <zeile>
> <text>Auch dieser Text wird kodiert</text>
> <kodierung variable=3D"321" />
> <kodierung variable=3D"233" />
> </zeile>
>
> </zeilen>
> ----end artikel.xml---
>
> Daraufhin bekomme ich die Fehlermeldung
> "Not an ARRAY reference at ./skript.pl line 7".
>
>
> Wie l=C3=B6se ich das Problem?
>
>
> Danke,
>
> Christian Andersen
>