# XMLEncoder und AbstractTableModel



## Bender (17. Jun 2011)

Hallo, 

ich habe folgendes Problem. Ich habe mehrere Klassen, die ich mit dem XMLEncoder speichern will.

Bei einfachen Klassen klappt es, nur habe ich auch einige Klassen die Models für JTables sind. Dabei wird mir immer nur eine xml-datei ohne Variableninhalt erstellt. Hinzu kommt bei diese Klasse, dass sie eine ArrayList enthält, wegen dem Model halt. Das habe ich auch in keiner anderen Klasse.

So sieht die KLasse aus:


```
public class TestKlasse extends AbstractTableModel implements Serializable{

private ArrayList<T> liste;
}
```

Kann mir vielleicht jemand sagen, wo das Problem liegt? Oder ob es nicht möglich ist?


----------



## Wildcard (18. Jun 2011)

Die Klasse muss die Java Bean Conventions erfüllen um korrekt mit dem XMLEncoder serialisiert zu werden. IMO ist XMLEncoder keine sehr geschickte Wahl um Daten zu persistieren. Besser du verwendest ein XML Binding Framework wie EMF oder Jaxb.


----------



## Bender (18. Jun 2011)

Danke für den Tipp. XMLEncoder scheint wirklich nicht das richtige zu sein. Habe gestern auch noch XStream versucht, dass ist doch auch ein XML Binding Framework, wenn ich es richtig verstanden habe.

Dabei ergibt sich jetzt folgendes Problem. Speichern und Laden ist kein Problem. Nur mit jedem Speichervorgang wird die Datei 500kB größer, somit hab ich jetzt schon eine 20 MB Datei und ich habe bisher nur kleine Tests gemacht und sogut wie keine Daten in der Tabelle modifiziert oder hinzugefügt. 

Gibt es da auch ne Möglichkeit, dass er nur die Daten Speichert und nicht das ganze Modell, das ist denke ich das Problem.


----------



## Wildcard (18. Jun 2011)

XStream ist eine Objektserialisierung, kein Binding Framework. Wie gesagt, ich würde EMF, oder Jaxb verwenden. Lass dir Klassen generieren und dann hast du ein Datenmodell das du laden und speichern kannst. Sowas wie ein TableModel direkt serialisieren zu wollen ist keine gute Idee.


----------



## Bender (18. Jun 2011)

vielen dank.

klappt jetzt ohne Probleme. Und auf einmal ist die Datei auch wieder nur 8Kb groß.


----------

