XML in UTF-8 mit SAX parsen

Rated_R

Mitglied
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 &amp; 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);
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.
Java:
public void characters(char[] ch, int start, int length) throws SAXException {
	tempVal = new String(ch,start,length);
}
tempVal wird dann je nach endElement in meiner Klasse abgespeichert, z.B:
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!
 
M

Marcinek

Gast
Das sind XML entities und müssten decodiert werden.

Das hat aber nix mit dem encoding UTF / ISO zu tun
 
Zuletzt bearbeitet von einem Moderator:

Rated_R

Mitglied
danke für die Antwort!
Sorry wenn ich das verwechselt habe...wie kann ich also diese Zeichen so umwandeln dass mein SAX-Parser das auch richtig interpretiert?
 
M

Marcinek

Gast
Er sollte sie schon richtig interpretieren könnne.

Wenn du sie ersetzen willst, dann kannst du mal eine SimpleEntitieResover an deinem Parser registrieren.
 

Wildcard

Top Contributor
Übrigens ist mir nicht ganz klar warum du einen String in ein byte[] wandelst nur um daraus wieder einen String zu machen. Nimm doch zB einen StringReader
 
M

Marcinek

Gast
Java:
public void characters(char[] ch, int start, int length) throws SAXException {
    tempVal = new String(ch,start,length);
}

Meinst du das?

Das ist eine SAX Calllback Methode
 

Rated_R

Mitglied
Danke habs geschafft!
Habe mit diesen beiden Zeilen die HTML Entities in Ö, ß usw umgewandelt:
Java:
result = StringUtils.unescapeHTML(result);
result = StringEscapeUtils.unescapeXml(result);
und dann mit
Java:
result = result.replaceAll("&", "amp");
das & in den Links ersetzen da sonst folgender error kam:

The reference to entity "in" must end with the ';' delimiter.

Vielleicht nicht besonders schön gelöst, aber es macht den Job *g*
 

Wildcard

Top Contributor
Java:
public void characters(char[] ch, int start, int length) throws SAXException {
    tempVal = new String(ch,start,length);
}

Meinst du das?

Das ist eine SAX Calllback Methode
Nein, ich meine das:
Java:
InputStream is = new ByteArrayInputStream(xml.getBytes("UTF-8")); //xml ist der XML-String
 

Bierhumpen

Bekanntes Mitglied
Das ist jetzt der ungefähr dreihundertste Thread zu dem Problem, weil anscheinend niemand für nötig hält die Dokumentation zu lesen, in der nämlich steht, dass die characters() Methode auch mehrmals aufgerufen werden kann. Deine Implementierung überschreibt jedes mal den vorherigen Wert. Da musst du auch keine Entitäten umwandeln, auch wenn's funktioniert, ansonsten haut er's dir halt in einer Woche um die Ohren mit ner anderen XML Datei.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
MiMa Buch Metadaten aus XML Datei parsen XML & JSON 48
S XML Document Parsen und Ausgeben mit Suchfunktion XML & JSON 21
M parsen von realen HTML-WEB-Seiten XML & JSON 1
MiMa parsen mit regex -> ein schnelles Ende XML & JSON 10
K Beim Parsen einer XML-Datei Connection timed out XML & JSON 4
F Parsen von Daten aus einer Homepage XML & JSON 6
G Langsam beim SAX-Parsen - woran liegts? XML & JSON 2
C Parsen des XML-Streams mit SAX XML & JSON 3
M XML Datei Parsen XML & JSON 4
D SAX parsen - Wie? XML & JSON 11
S XML Parsen und Werte zwischenspeichern XML & JSON 2
K Kurze XML Datei Parsen XML & JSON 5
whitenexx Problem beim parsen von Facebook XML XML & JSON 3
J Comments in XML parsen XML & JSON 3
H Nicht wohlgeformtes XML mit SAX parsen XML & JSON 2
M XML Parsen JDOM NullPointerEcxeption XML & JSON 7
Z XML parsen - Element mit Werten XML & JSON 2
ruutaiokwu xml nur bis auf eine bestimmte ebene parsen mit javax.xml... XML & JSON 5
L [SAX] Geschachtelte XML Datei parsen XML & JSON 3
O Parsen einer XML mit JDOM ohne Doctype Declaration XML & JSON 2
F Probleme beim html parsen mit tagsoup XML & JSON 4
M Probleme beim Parsen eines gefilterten XML-Dokuments XML & JSON 6
Semox Kann JUnit XML Parsen? XML & JSON 2
L Reihenfolge beim xml Datei parsen einhalten? XML & JSON 8
L xml Datei parsen ohne End-Tag XML & JSON 6
T RSS-Feed parsen und in Datenbank speichern XML & JSON 6
B XML parsen XML & JSON 3
H XML parsen und unbekannten Namespace zurückgeben XML & JSON 5
L invalide xml document parsen?! XML & JSON 2
S DOM Parsen Problem mit HTML Sonderzeichen XML & JSON 4
ABstraCT XML properties am einfachsten parsen. XML & JSON 2
U xmi parsen über emf XML & JSON 10
S XML-Schema einlesen um parsen zu erleichtern? XML & JSON 2
T Problem beim Parsen von Attribut xmlns="urn:com:test&qu XML & JSON 6
P XMLGregorianCalender parsen XML & JSON 4
M Datei parsen XML & JSON 5
S HTML mit dom4j parsen? XML & JSON 2
X XML File auslesen/parsen u. in ne Hashmap speichern XML & JSON 2
Saxony unbekannte XML Datei parsen und ausgeben XML & JSON 10
P "Formatierungs-Tags" parsen XML & JSON 3
M Attribute parsen XML & JSON 6
R Parsen einer XML ohne Validierung XML & JSON 2
D XML Datei innerhalb einer JAR Datei parsen XML & JSON 2
M Xerces -Parsen mit einer externen Schemadatei geht nicht XML & JSON 2
L bz2-Datei parsen XML & JSON 9
K XML parsen Whitespaces XML & JSON 2
I XML-String mit SAX parsen ? XML & JSON 2
M Object in XML parsen XML & JSON 2
byte Probleme beim Parsen von XHTML-Datei XML & JSON 4
P HTML Seite Parsen, und bestimmten Text extrahieren XML & JSON 3
X xml und xsl parsen mit xerces XML & JSON 8
W Xml-String parsen XML & JSON 2
W root element parsen,Hilfe! XML & JSON 5
F Gibt es Möglichkeiten Deutsche Sätze zu parsen ? XML & JSON 2
A Auf der Suche nach Bibliotheken oder wie parsen? XML & JSON 15
S XML Datei mit Schemafehler parsen XML & JSON 14
R StreamSource parsen ! XML & JSON 8
R RSS parsen XML & JSON 2
K XML Datei parsen XML & JSON 4

Ähnliche Java Themen

Neue Themen


Oben