# Speichern und laden via XML



## Nud3l (29. Juni 2009)

Hallo

ich habe eine Programm geschrieben das irgendwas verwaltet nun möchte ich das gerne Speichern und laden. 

Nur bin ich mir Unsicher wie ich das machen soll erst wollte ich serialisieren nun wurde mir davon abgeraten da sich das Model verändern kann und so ältere Daten nicht mehr geladen werden können

Dies soll aber in xml gehen nur habe ich ein Problem wie ich das anstelle habe noch keine Erfahrung mit xml .. Wie und wo fange ich am besten an nach zu lesen oder hat einer ein Beispiel code?


----------



## zeja (29. Juni 2009)

Bitte achte auf deine Rechtschreibung und Zeichensetzung!

Schau dir mal http://xstream.codehaus.org/ an.


----------



## Oliver Gierke (29. Juni 2009)

... oder XmlBeans oder JAXB oder Castor...


----------



## zeja (29. Juni 2009)

Nur nie selber per Hand basteln  

Oder noch schlimmer parsen... http://thedailywtf.com/Articles/What-Could-Be-Easier-Than-XML.aspx


----------



## Nud3l (29. Juni 2009)

Ich habs jetzt mit Jaxb gebastelt klappt wunderbar 
danke für die Tipps


----------



## Nud3l (21. August 2009)

Natoll nach dem ich mein Projekt weiter entwickelt habe klappt JAXB nicht mehr da ich eine schreibgeschützte Klasse verwende in der kein default constructor existiert... 

Wie sieht es denn bei den anderen Möglichkeiten aus ? Kann ich da an meiner schreibgeschützten Klasse auch Probleme bekommen?


----------



## zeja (21. August 2009)

Ein privater Konstruktor sollte eigentlich schon reichen.

Ansonsten kannst du dir nen eigenen Handler basteln der der ne Instanz erstellt.


----------



## Nud3l (21. August 2009)

zeja hat gesagt.:


> Ein privater Konstruktor sollte eigentlich schon reichen.
> 
> Ansonsten kannst du dir nen eigenen Handler basteln der der ne Instanz erstellt.



hmm wie privater Konstruktor? ich darf die Datei nicht verändern.. also auch kein Konstruktor hinzu fügen..

Das ganze ist wieso voll komisch nur weil irgendwo ein get auf der Klasse aufgerufen wird will JAXB das ganze ding speichern


----------



## zeja (21. August 2009)

Wenn du das gar nicht speichern willst, kannst du mit omit aber auch Felder ausschließen.

Oder mit nem Converter: http://xstream.codehaus.org/converter-tutorial.html


----------



## Nud3l (24. August 2009)

hmm irgedn wie klappt bei mir  Xstream nicht ich bekomme folgende Fehler meldung

Error Massage:

```
com.thoughtworks.xstream.mapper.CannotResolveClassException:
sbh.ocit.mockups.model.MDomain : sbh.ocit.mockups.model.MDomain
at com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:68)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.DynamicProxyMapper.realClass(DynamicProxyMapper.java:71)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.PackageAliasingMapper.realClass(PackageAliasingMapper.java:88)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.ClassAliasingMapper.realClass(ClassAliasingMapper.java:86)
```

MY code: serialize:

```
MDomain speicherMDomain = OcitsimulationSingleton.getInstance().getLnkDomain();
XStream xstream = new XStream(new DomDriver());
FileOutputStream fs = new FileOutputStream(selected);
xstream.toXML(speicherMDomain, fs);
```


 deserialize

```
XStream xstream = new XStream(new DomDriver());
FileInputStream fis = new FileInputStream(selected);
MDomain mDomainRead = (MDomain) xstream.fromXML(fis);
```

Irgendwie am Code kann es nicht liegen oder? in den paar Zeilen kann man nicht viel Falsch machen


----------



## Nud3l (25. August 2009)

Axo eine kleine Ergänzung der Fehler passiert beim deserialisieren

Das serialisieren klappt ohne Probleme und die XML Datei sieht auch an für sich gut aus... es steht alles drin.


----------



## zeja (25. August 2009)

Ist die Klasse denn in deinem Classpath? Wird sie genauso geschrieben?


----------



## Nud3l (26. August 2009)

Wie im Classpath ? Wo muss ich das einstellen? 

Der Name passt auch die Pakete Beschreibung stimmt 

PS: ist ein Eclipse Plugin ka ob da was anders eingestellt werden muss aber ich denke das das eigentlich kein Problem sein sollte. Vielleicht gibt es da auch Unterschiede mit den Classpath...


----------

