Java-String in XML?

mkl

Mitglied
Hi Leute,

ich habe gerade folgendes Problem das ich eine Datei erstellen möchte die XML beinhaltet. Nun habe ich z.B. folgendes Szenario:

<item>Gemüsesuppe</item>

Wenn ich das als String so in die Datei schreibe und die Datei als meinedatei.xml speicher dann stimmt das Format anscheinend nicht. Zumindest zeigt mir Chrome immer an Sonderzeichen einen Fehler an. Wenn ich die ganzen Sonderzeichen jedoch ersetze mit den typischen &auml; zeichen funktioniert es zwar in Chrome wenn ich jedoch die XML mit meinem Handy parsen will klappt das ganze wieder nicht und er steigt beim &auml; aus...

Im Prinzip soll alles wie diese Datei von der Uni (Ich mache das gleiche für die Hochschule) aussehen.

http://www.uni-ulm.de/mensaplan/mensaplan.xml

Würd mich freuen wenn ihr mir helfen könntet ich vermute, dass ich die String erst UTF-8 konform konvertieren muss?
 
Was steht denn in , der von dir geposteten, xml Datei drinn?
Code:
<?xml version="1.0" encoding="UTF-8"?>
Mit diesem Format sollte auch deine Datei keine Probleme mehr mit Umlauten haben sollen.
 
Ich vermute mal du verwendest beim schreiben einen FileWriter der dann das falsche Encoding auswählt. Benutze statt dessen mal [c]new OutputStreamWriter(new FileOutputStream(...),"UTF-8")[/c].
 
Hi, ja genau das war mein erster Ansatz ich hab es jetzt Zwischenzeitlich anders gelöst 🙂

Für alle die irg. mal das gleiche Problem haben könnten:

Code:
String xml = "<test></test>";
Source src = new StreamSource(new java.io.StringReader(xml)); 
		
       File fileOutput = new File("ausgabe.xml");
       StreamResult streamResult = new StreamResult(fileOutput);
       TransformerFactory tf = TransformerFactory.newInstance();
		
       Transformer serializer = null;
      
       try 
       {
			serializer = tf.newTransformer();
       } 
       catch (TransformerConfigurationException e1) 
       {
			e1.printStackTrace();
       }
       
       serializer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
       serializer.setOutputProperty(OutputKeys.INDENT, "yes");
       
       try 
       {
    	   serializer.transform(src, streamResult);
       } 
       catch (TransformerException e1) 
       {
			e1.printStackTrace();
       }
 

Zurück
Oben