Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi OmniXML (https://www.delphipraxis.net/33919-omnixml.html)

aps 14. Nov 2004 20:05


OmniXML
 
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:

Delphi-Quellcode:
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:
Delphi-Quellcode:
xmlDoc.removeChild(xmlDoc.documentElement);
In diesem Fall funktioniert zwar das Schreiben in die XML-Struktur, dann aber reagiert das Programm nicht mehr, wenn
Delphi-Quellcode:
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!


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz