Thema: Delphi OmniXML

Einzelnen Beitrag anzeigen

aps

Registriert seit: 21. Sep 2003
Ort: Hameln
62 Beiträge
 
Delphi 6 Professional
 
#1

OmniXML

  Alt 14. Nov 2004, 20:05
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!
Andreas
  Mit Zitat antworten Zitat