Thread xml tiefer auslesen
(5 answers)
Opened by jan99 at 2015-08-14 07:52
Die Struktur ist zyklisch, d.h. dass in der Sequenz eine sich wiederholende Datenstruktur steckt. Die Wiederholung baut auf eine sogenannte Entity, hier gekennzeichnet als MenuMacro/UID.
Darüber steht noch die Gruppe, die jedoch ist für den Zyklus zunächst uninteressant. Schauen wir mal, welche Informationen überhaupt in der Sequenz stecken und welche Datenstruktur uns erwartet. Die ist nämlich gar nicht so kompliziert und alle Andere als tief. Und: Sie muss nicht rekursiv durchlaufen werden, weil sie eben einfach zyklisch ist. Eine für mich erkennbare Struktur ist ein Hash mit Referenzen: Code: (dl
)
1 $MacroMenus = { Die Macrogruppe ist wie folgt eingebaut: Bei meiner Umsetzung in den Hash habe ich ein paar Sachen vereinfacht, um das mal deutlich zu machen: Der Zweig Code: (dl
)
1 name_xlate => true, lässt sich nämlich auch tiefer gliedern, z.B.: Ich weiß nun nicht, was hier zuerst entwickelt wurde, die XML-Sequenz oder die Datensruktur. Vermutlich hat da einer, wie so oft, zuerst das XML entwickelt und geschaut, wo er seine Daten am Besten unterbringt. Grundsätzlich gibt es da zwei Möglichkeiten: 1. Tag steht allein, es gibt attribute=value <tag att='val'/> Das kann zu Code: (dl
)
tag => { att => val }; werden. 2. Tag wird geschlossen Code: (dl
)
<tag att='val'>Hier eine Weitere Information</tag> Das kann zu Code: (dl
)
tag => ['Hier eine Weitere Information', {att => val}] Für den Programmierer ist die XML-Sequenz völlig uninteressant, ihn interessiert einzig und allein die Datenstruktur, denn hierüber erfolgt der wahlfreie Zugriff (Random Acces) in seinem Programm und das passiert gewöhnlich im Hauptspeicher. Abstrakt: Zwischen XML (Sequenz, Datei) und Datenstruktur (Hash) steht ein sogenannter Serializer. Der macht praktisch nichts weiter, als die Daten transportsicher zu verpacken. Ein Serializer vermittelt. Möglicherweise wird auch transformiert, d.h., aus einem Hash wird ein Array gemacht oder umgekehrt. Warum ich das hier alles aufschreibe: Versuche, zu verstehen, welches Ergebnis dich erwartet, nachdem du auf CPAN diesen oder jenen XML-Serializer gefunden hast. Und versuche, zu verstehen, wie das Ergebnis, sprich: Hash/Array zustande kommt. Die Grundbausteine: Tags, Attribute, Label sind immer wieder dieselben. Nur die Datenstruktur, die kann bei gleichem Informationsgehalt völlig anders aussehen. Aus Meinem Beispiel-Hash ganz oben kannst du genausogut ein Array erzeugen ohne dass Informationen/Daten verlorengehen. Versuche zu erkennen, wo ein Zyklus beginnt/endet und ob für deine Verarbeitung ein Hash oder Array besser passt. Letztendlich jedoch, musst Du wissen, ob du dem Entwickler des Serializers vertrauen kannst: Ob er dir genau das liefert, was am Besten in dein Programm passt. Last edited: 2015-08-15 09:02:11 +0200 (CEST) |