Hallo!
Ich habe ein Problem mit meinem SAX-Parser:
Und zwar hole ich mir von einem RESTful Webservice eine XML-Datei mit UTF-8 Encoding (habe also keinen Einfluss auf das gelieferte Ergebniss). Diese Datei enthält Sonderzeichen, z.B:
[XML]<opening_hours>Öffnungszeiten: Mo-Sa. 09:00- 01:00 & So. 09:00-18:00 Uhr</opening_hours>[/XML]
Statt dem Ö steht aber "& #214" (ohne Leerzeichen da sonst wieder "Ö" zu sehen wäre).
Die XML-Datei wird zuerst als String angespeichert, um diesen dann an den Parser zu senden.
Dabei lautet der Parseraufruf wie folgt:
Nun tritt folgendes Problem auf: Das Parsen an sich funktioniert ohne Exceptions, nur sieht der geparste String aus obigem Beispiel dann so aus:
"ffnungszeiten: Mo-Sa. 09:00- 01:00 Uhr So. 09:00- 18:00 Uhr"
Bei Sonderzeichen wie ä, ü, ö und ß wird also nur der String nach dem Sonderzeichen geparst und der Rest ignoriert.
Steht zum Beispiel in der XML-Datei
[XML]<street>Hauptstraße</street>[/XML]
("& #223" statt "ß") bleibt am Ende nur "e" übrig.
Ich habe mir natürlich meinen eigenen Content-Handler geschrieben und ich vermute dass der Fehler in der characters-Methode liegt. Aber ich habe keine Idee wie ich ihn beheben könnte.
tempVal wird dann je nach endElement in meiner Klasse abgespeichert, z.B:
Ich wäre sehr froh wenn mir jemand weiterhelfen könnte.
Danke im Voraus!
Ich habe ein Problem mit meinem SAX-Parser:
Und zwar hole ich mir von einem RESTful Webservice eine XML-Datei mit UTF-8 Encoding (habe also keinen Einfluss auf das gelieferte Ergebniss). Diese Datei enthält Sonderzeichen, z.B:
[XML]<opening_hours>Öffnungszeiten: Mo-Sa. 09:00- 01:00 & So. 09:00-18:00 Uhr</opening_hours>[/XML]
Statt dem Ö steht aber "& #214" (ohne Leerzeichen da sonst wieder "Ö" zu sehen wäre).
Die XML-Datei wird zuerst als String angespeichert, um diesen dann an den Parser zu senden.
Dabei lautet der Parseraufruf wie folgt:
Java:
InputStream is = new ByteArrayInputStream(xml.getBytes("UTF-8")); //xml ist der XML-String
InputSource isource = new InputSource();
isource.setByteStream(is);
isource.setEncoding("UTF-8");
reader.parse(isource);
"ffnungszeiten: Mo-Sa. 09:00- 01:00 Uhr So. 09:00- 18:00 Uhr"
Bei Sonderzeichen wie ä, ü, ö und ß wird also nur der String nach dem Sonderzeichen geparst und der Rest ignoriert.
Steht zum Beispiel in der XML-Datei
[XML]<street>Hauptstraße</street>[/XML]
("& #223" statt "ß") bleibt am Ende nur "e" übrig.
Ich habe mir natürlich meinen eigenen Content-Handler geschrieben und ich vermute dass der Fehler in der characters-Methode liegt. Aber ich habe keine Idee wie ich ihn beheben könnte.
Java:
public void characters(char[] ch, int start, int length) throws SAXException {
tempVal = new String(ch,start,length);
}
Java:
public void endElement(String uri, String localName,
String qName)
throws SAXException {
if(qName.equalsIgnoreCase("street")){
tmpAd.setStreet(tempVal);
}
Ich wäre sehr froh wenn mir jemand weiterhelfen könnte.
Danke im Voraus!