# XML-Dokument / JTree



## Johannes L. (5. Sep 2006)

Hallo,

ich soll einen Frontend XML-Editor schreiben, welcher möglichst speicherarm arbeitet, d.h. DOM sollte ich am Besten vermeiden und einen JTree nur soweit immer aufbauen, soweit dieser auch aufgeklappt/expandiert wird. Wenn ich nun SAX nehme, dann müsste ich mir ja eine eigene Datenstruktur aufbauen, was relativ aufwendig wäre denke ich, zumal die Elemente/Attribute/PIs/Kommentare/CDATA-Abschnitte usw. alle ja änderbar sein sollten und ich mir ein Kontextmenü vorgestellt habe, das man praktisch durch anklicken eines Knotens im Baum mit der rechten Maustaste erreicht und dort ein Menü aufklappt mit welchem man eben den jeweiligen Knoten löschen kann, hinter diesem oder vor diesem einen neuen einfügen kann usw.

Das ganze soll halt bei ziemlich großen Dokumenten auch noch performant sein...

Wie würdet ihr das denn angehen? Grafisch soll eigentlich auch nur der JTree dargestellt werden, eventuell in einem JSplitPane, wobei rechts der Inhalt von bspw. Textknoten dargestellt werden kann.

Viele Grüsse,
Johannes


----------



## Wildcard (5. Sep 2006)

Letztlich musst du dich wohl entscheiden ob dir Performanz (dann JDOM) oder Speicherverbauch(dann SAX) wichtiger ist.


----------



## Johannes L. (5. Sep 2006)

Naja, aber irgendwie kann ich doch mit keiner API nur einen Teil zu einem bestimmten Zeitpunkt einlesen und dann erst wieder einen Teil, sobald man einen Teil des JTrees expandiert. SAX ist ja Ereignisgesteuert, d.h. ich nehme eine Instanz des Parsers, dieser parst das XML-Dokument und löst dabei Ereignisse aus, wobei man den Parser ja nicht anhalten kann, oder sehe ich das falsch? D.h. dem JTree erst Knoten hinzuzufügen wenn man einen Zweig expandiert dürfte schwierig bis unmöglich sein!?


----------



## Wildcard (5. Sep 2006)

Das ist eben das Problem. Du musst dich entscheiden ob du mit DOM alles in den Speicher lädst, oder mit SAX jedesmal neu parst. Eine konzeptionell andere Möglichkeit ist mir nicht bekannt.
Wie gesagt... performance oder speicher. Beides wird nicht gehen.


----------



## Roar (6. Sep 2006)

doch http://en.wikipedia.org/wiki/StAX 
hab aber selbst noch nix damit gemacht - wird mal zeit.


----------



## Wildcard (6. Sep 2006)

Hört sich doch gut an. 
THX Roar  :wink:


----------



## byte (6. Sep 2006)

Ich les immer StAX... :roll:
Muss ich mir auch mal angucken, was es damit auf sich hat.


----------



## clemson (6. Sep 2006)

ich weiß jetzt nicht wies mit der performance ausschaut, aber vielleicht hilft dir ja der thread weiter (in diesem geht es um die verwendung von einem jdom-document als tree-model).

Using JTree to display JDOM


----------

