Ich habe mit
XML diesbezüglich zwei wesentliche Erfahrungen gemacht:
1. Du machst es dir immer am einfachsten, wenn du
XML-Serialisierung verwenden kannst. Die geht fast automatisch und ist normalerweise, je nach Bibliothek, sehr schnell. In .NET wird beispielsweise für die Serialisierung Code generiert, der die Klassen sozusagen hartgecodet in
XML schreiben und daraus lesen kann. Das funktioniert eigentlich auch mit größeren Dokumenten sehr angenehm.
2. Man kann
XML ja auch zippen. Da sind erstaunlich hohe Komprimierungsraten möglich und die Geschwindigkeit ist gar nicht so schlecht. Eines meiner Projekte schaltet einfach einen GZipStream zwischen die Datei und die
XML-Serialisierung, damit hat man sehr einfache Handhabung und es läuft bisher alles wunderbar und schnell genug (es müssen dabei ohnehin eine Menge andere Dinge gemacht werden, gegen die der
XML-Overhead winzig wird).
Davon abgesehen bietet
XML natürlich gewisse Vorteile wie das einfache Umwandeln in andere Formate, einfache Report-Generierung etc.
Ein Teil dieser Vorteile fällt bei dir jedoch weg, weil du ja anscheinend viele Daten doch wieder in einem speziellen Format kodierst.
Edit: Ich würde dir bei so großen Dokumenten grundsätzlich von einem
DOM-Parser abraten und, wenn Serialisierung nicht verfügbar ist, entweder einen
SAX-Parser oder einen Polling-Parser anraten, je nachdem, was du lieber magst oder besser für dein Dokument geeignet ist.
Als Fazit: Probier es aus. Schreib dir ein kleines Programm, dass dir eine beispielhafte, sehr große
XML-Datei generiert und miss die Zeit, und dann lass das Programm die Datei wieder einlesen und miss wieder die Zeit (und die Dateigröße). Eine einfache Implementierung ist nicht aufwändig, aber damit kannst du auf jeden Fall herausfinden, ob die Performance oder die Datengröße ein Hinderungsgrund ist.