# Einfache SAX - DOM Performancefrage



## Guest (4. Mrz 2006)

Hallo,
also ich hätte einmal eine Frage bzgl. der Performance von SAX und (J)Dom:

Bisher parse ich eine XML Datei mit SAX, da ich später auf best. Teile zugreifen will speichere ich entsprechend
die Struktur in einer HashMap (der aufbau der xml datei ist entsprechend das sich das speichern in hashmap anbietet).

Später nehme ich dann Werte aus der HashMap raus, evtl. keine oder nur wenige oder vielleicht alle. Zumindest suche ich darin und verwende evtl. Informationen daraus.

Nachdem ich so weit war hab ich mich gefragt ob nicht (J)Dom die bessere Lösung gewesen wäre? Weil wenn ich alles in der HashMap speichere hab ich ja auch praktisch den ganzen Dokumentenbaum im Speicher und ich greife nachher drauf zu.

Was würdet ihr sagen: (J)Dom nehmen und nachher gezielt auf Elemente/Attribute zugreifen oder so wie bisher SAX -> in HashMap speichern -> in HashMap suchen, bzw. evtl. Informationen rausnehmen?


----------



## byte (4. Mrz 2006)

Warum das Rad neu erfinden? Nimm (J)DOM...


----------



## Gast (4. Mrz 2006)

ja,das hab ich mir nachher auch gedacht. es macht also keinen unterschied vom speicherbedarf etc. her ob ich nun alles mit sax parse und in hashmap speichere oder direkt (j)drom nehme?


----------



## Dante (5. Mrz 2006)

naja, potentiell wird jdom schon etwas mehr speicher verbrauchen, die frage ist halt, ob das überhaupt interessiert, wieviel zig mb xml willst du denn parsen? Ab einer bestimmten Menge bekommst du mit beiden Lösungen probleme, daher wird man bei SAX-Parsern eigentlich nix zwischenspeichern, sondern möglichst immer einen Datensatz komplett auslesen und dann wegspeichern oder was man sonst damit vor hat, so bleibt nix im Speicher.


----------



## Bleiglanz (7. Mrz 2006)

wenn das Dokument klein ist oder genügend Speicher da ist oder man alles braucht (bzw. man die volle Struktur benötigt)

=> DOM, JDom, XOM oder ein anderes Baum API

nur wenn das ggf. Riesendokumente sind und wenn man NICHT alles braucht, oder auch nur auf die "Baumstruktur" verzichten kann, dann SAX

SAX ist halt schneller und benötigt weniger Speicher


----------

