Johannes: XML::Parser, Style Tree bzw. Objects

Hi,
ich möchte eine XML-Datei mit dem Parser auslesen und dabei am liebsten den Objects-Style oder aber auch den Tree-Style verwenden. Alle Beispiele, die ich dazu gefunden habe, sehen folgendermaßen aus:

initialize parser and read the file

use XML::Parser;
$parser = new XML::Parser( Style => 'Tree' );
my $tree = $parser->parsefile( shift @ARGV );

dump the structure

use Data::Dumper;
print Dumper( $tree );

When run on the file in Example 6-4, it gives this output:

$tree = [
'preferences', [
{}, 0, '\n',
'font', [
{ 'role' => 'console' }, 0, '\n',
'size', [ {}, 0, '9' ], 0, '\n',
'fname', [ {}, 0, 'Courier' ], 0, '\n'
], 0, '\n',
'font', [
{ 'role' => 'default' }, 0, '\n',
'fname', [ {}, 0, 'Times New Roman' ], 0, '\n',
'size', [ {}, 0, '14' ], 0, '\n'
], 0, '\n',
'font', [
{ 'role' => 'titles' }, 0, '\n',
'size', [ {}, 0, '10' ], 0, '\n',
'fname', [ {}, 0, 'Helvetica' ], 0, '\n',
], 0, '\n',
]
];

Leider weiß ich nicht, wie ich jetzt auf die eizelnen Elemente zugreifen kann. Da wird immer nur die gesamte Struktur ausgegeben, aber das hilft mir überhaupt nicht weiter.

Ich hoffe, Ihr könnt mir helfen.

Gruß
Johannes

  1. Tag Johannes.

    ich möchte eine XML-Datei mit dem Parser auslesen und dabei am liebsten den Objects-Style oder aber auch den Tree-Style verwenden.

    Die Datenstruktur wird in der Dokumentation beschrieben (Styles: Tree).

    Leider weiß ich nicht, wie ich jetzt auf die eizelnen Elemente zugreifen kann. Da wird immer nur die gesamte Struktur ausgegeben, aber das hilft mir überhaupt nicht weiter.

    Tree liefert dir eine ziemlich komplexe Datenstruktur (siehe perldsc und perlreftut). Ein Zugriff auf einzelne Elemente ist deshalb m.E. nur unter genauer Kenntnis des Dokumentenbaumes möglich. Eventuell wäre die in diesem Archivposting beschriebene Möglichkeit empfehlenswerter, damit kannst du dir - wenn nötig - deine eigene Datenstruktur schaffen.

    Siechfred