Hallo,
ich habe ein Projekt umgestellt auf Datenspeicherung in
XML-Dateien (zuvor ein proprietäres, binäres Format). Dafür verwende ich OmniXML (MS-
XML ist sehr langsam).
Wenn ich nun größere Dateien verarbeite, kommt es unter Windows 98/ME zu einem Phänomen (tritt auf Windows XP/2000 nicht auf): Das Programm reagiert nicht mehr beim Speichern.
Mein Programm läuft so (Prinzip-Schema in Pseudo-Code):
Code:
Daten aus
XML-Datei in interne Struktur laden
Daten bearbeiten (in interner Struktur)
XML-Struktur anlegen
Daten in
XML-Datei speichern
Das Programm stürzt immer an der Stelle ab, wo ich in der Speichern-Routine folgendes angegeben habe:
xmlDoc := CreateXMLDoc;
(xmlDoc wird bei mir global verwendet für alle
XML-Dateioperationen).
Wenn ich diese Zeile entferne, funktioniert es zwar prinzipiell, allerdings stehen dann alle Daten doppelt in der
XML-Datei (inklusive zweier Root-Nodes, es gibt also keine Wohlgeformtheit mehr).
Auch der Trick, zuvor den Rootnode wegzuwerfen, bringt mich nicht wirklich weiter:
xmlDoc.removeChild(xmlDoc.documentElement);
In diesem Fall funktioniert zwar das Schreiben in die
XML-Struktur, dann aber reagiert das Programm nicht mehr, wenn
xmldoc.SaveToStream(Stream);
aufgerufen wird.
Wie kann ich dieses Problem elegant lösen? Oder gibt es eine besser funktionierende Alternative zu OmniXML? Mit OpenXML komme ich leider nicht klar, MS-
XML ist sehr langsam
Danke!