XML::Simple
Don P
- perl
Hallo,
Zur Verarbeitung von XML-Daten gibt es z.B. die Module XML::Parser und XML::Simple, welches auf XML::Parser aufbaut.
So weit, so gut, aber leider verliert man mit XML::Simple die Reihenfolge der XML-Tags.
In diesem kleinen Tutorial z.B. ist beschrieben, wie XML::Simple eingesetzt werden kann. Das Beispiel dort benutzt folgende Quelldaten:
<?xml version='1.0'?>
<employee>
<name>John Doe</name>
<age>43</age>
<sex>M</sex>
<department>Operations</department>
</employee>
Und XML::Simple erzeugt daraus folgende Struktur:
$VAR1 = {
'department' => 'Operations',
'name' => 'John Doe',
'sex' => 'M',
'age' => '43'
};
Das ist ein Hash, ok.
Hash-keys haben keine bestimmte Reihenfolge, soweit verstehe ich das ja, aber gibt es denn keine Möglichkeit, die Tags irgendwie in der Reihenfolge zu erhalten, wie sie im Quelldokument stehen?
Ist XML::Simple dafür zu simple, oder habe ich nur etwas übersehen?
Kann mir nicht vorstellen, dass das immer so gewünscht ist, im Gegenteil. Kennt sich da jemand aus und hat vielleicht eine Lösung? Gibt es andere Module, die dafür besser geeignet sind?
Danke und Gruß, Don P
Ist XML::Simple dafür zu simple, oder habe ich nur etwas übersehen?
Hast du die Doku gelesen?
Struppi.
Hallo,
Ist XML::Simple dafür zu simple, oder habe ich nur etwas übersehen?
Hast du die Doku gelesen?
Ähem – zuerst nur überflogen, aber jetzt sehe ich, dass meine Frage dort beantwortet ist:
"Mixed content (elements which contain both text content and nested elements)
will be not be represented in a useful way - element order and significant
whitespace will be lost. If you need to work with mixed content, then
XML::Simple is not the right tool for your job"
Ok, dann halt nicht. Wäre auch zu schön gewesen...
Eigentlich bräuchte ich das Tool xml_split im Lieferumfang XML::Twig, und zwar mit der Option -g. Leider wird bei -g aber gar nicht XML::Twig benutzt, sondern direkt XML::Parser, und der verschrottet mir dann alle Text-Inhalte: Wenn der Parser mit meinen Daten fertig ist, sind nur noch Tags übrig, keinerlei Text-Inhalt mehr. Das ist nicht XML-split, eher XML-shit... ;-)
Gruß, Don P