Thema: Delphi Objekte in XML speichern

Einzelnen Beitrag anzeigen

Eisenherz

Registriert seit: 10. Jun 2002
Ort: Stadeln
33 Beiträge
 
Delphi 5 Professional
 
#2

Re: Objekte in XML speichern

  Alt 19. Apr 2006, 16:17
Hallo Andreas,

nachdem du in dem anderen Thread bereits auf mein RakBinaryStreamData hingewiesen wurdest, nehme ich an, dass Du zumindest grob weißt wofür man es verwenden kann.

Um dein XML-Problem zu lösen kannst du prinzipiell genauso vorgehen, wie ich bei RakBinaryStreamData. Der Unterschied besteht in der Hauptsache darin, dass bei dir ein XML-Format und bei RakBinaryStreamData ein binäres Format abgespeichert wird. Bei beiden Wegen kann man mit Hilfe von Tags eine hierarchische Struktur anlegen, womit das Problem der Unterobjekte gelöst wäre.
Ich gehe immer gern den Weg, dass die Klassen selbst wissen, wie sie sich "abspeichern" können. Das ist jetzt vielleicht etwas missverständlich, da die meisten unter "Abspeichern", das Speichern in einer Datei oder eine andere Serialisierung verstehen. Das "Abspeichern" ist im ersten Schritt aber noch keine Serialisierung, sondern ein Umwandlen in ein anderes Datenformat. Bei RakBinaryStreamData werden die Daten der Objekte in eine hierarchische Objektstruktur der Klassen von RakBinaryStreamData umgehängt. Bei XML werden die Daten der Objekte in eine hierarchische Objektstruktur der von dir verwendeten XML-Klassen umgehängt.
Erst danach wird durch den Aufruf der entsprechenden Methode die Serialisierung durchgeführt. Bei RakBinaryStreamData kommt dabei ein binärer KuddelMuddel heraus, bei XML eine Textdatei.

Aber wieder zurück dazu, dass die Klassen die Daten selbst "abspeichern", sprich in ein anderes Format umhängen. Dazu verpasse ich den Klassen immer die Methode

Code:
procedure SaveToBinaryTag(Tag: TRakBinaryTag);
Für XML hattest du in dem anderen Thread ja schon etwas ähnliches angedacht, nämlich

Code:
procedure SaveToXML(const XmlDoc: IXMLDocument);
Hier darfst du als Parameter aber nicht die Document-Klasse verwenden, sondern die Tag-Klasse deines XML-"Parser". (so nebenbei: ich verwende bevorzugt OpenXML)


Ich hoffe das reicht als Anstoß
aloa Eisenherz
  Mit Zitat antworten Zitat