Umlaute in XStream

  • Themenstarter Themenstarter Gast
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Morgen!

Weiß jemand, wie ich mit XStream Umlaute in Textfeldern serialisiere? Erhalte nämlich beim Deserialisieren anstelle der Sonderzeichen nur Kreise oder Dreiecke.

Danke im Vorraus
 
XStream generiert keinen Header für die XML Datei in dem die Art der Codierung beschrieben wird. Für Umlaute braucht man die ISO-8859-1 als encoding. Das Ganze sieht dann so aus:

"<?xml version="1.0" encoding="ISO-8859-1"?>"

Diese Zeile muss an den Anfang der XML Datei:

Code:
.....
String url = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>"
......

try {
	FileOutputStream fos = new FileOutputStream ("Datei.xml");
	PrintWriter writer = new PrintWriter (new OutputStreamWriter (fos, "ISO-8859-1"), true);
	writer.println(url);
	xstream.toXML (JTextField, fos);
	
			
	} catch (IOException e1) {
		e1.printStackTrace(); }

Die Deserialisierung funktioniert wie gewohnt:

Code:
try {
FileInputStream fis = new FileInputStream(Datei.xml);
xstream.fromXML (JTextField, fis);
} catch (IOException e) { e.printStackTrace();};
 
So ganz war das oben aber nicht richtig!!!

Es sollte der PrintWriter und nicht der FileOutputStream dem XStream übergeben werden.

Java:
String enc = "UTF-8";
    FileOutputStream fos;    
      fos = new FileOutputStream (xmlFile);    
    PrintWriter writer = new PrintWriter(new OutputStreamWriter (fos,enc), true);
    writer.println("<?xml version=\"1.0\" encoding=\""+enc+"\"?>");
    xs.toXML (invImp, writer);

Dann klappt's auch mit dem Ergebnis in UTF-8 (oder sonstwas)

hth
C-Box
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben