XML Encoding-Problem in Servletumgebung

Sadik

Mitglied
Hallo!

Ich habe ein kleines Problem mit einer XML-Anwendung.

Situation:

Ich habe ein Servlet geschrieben, dass von einem externen Server einen XML-Datenstrom annehmen soll, ihn parst und validiert, und aus dem ich dann Werte rausziehe, weiterverarbeite (Kommunikation Großrechner etc, irrelevant für dieses Problem), danach einen XML-Antwortsatz zusammensetzt und diesen wieder an den Server zurückschickt.

Ich habe das Servlet so programnmiert, dass ich sowohl vom Server aus als auch von einer HTML-Form XML-Daten an dieses Servlet schicken kann. Zum parsen benutze ich den Xerces-Sax-Parser unter JDOM (SAXBuilder builder = new SAXBuilder("org.apache.xerces.parsers.SAXParser",VALIDATE)), ansonsten ist nichts außergewöhnliches an dem Servlet dran.

Problem:

Wenn ich über die HTML-Form XML-Testdaten an das Servlet schicke, die laut Dokument UTF-8 codiert sind (<?xml version="1.0" encoding="utf-8"?> funktioniert das System tadellos, sämtliche Funktionalitäten arbeiten wie gewünscht. Wenn dieses Dokument nun allerdings UTF-16 als Codierung angegeben hat bricht der Parser ab ("Error on line 0: The encoding "UTF-16" is not supported.")

Situation:

Es ist natürlich erst im Nachhinein rausgekommen, dass der Server nur UTF-16 verschickt, darauf hab ich keinen Einfluß, und die die Einfluß haben können oder wollen es nicht ändern. Muß ich mit Leben. Hier nun meine Fragen:

a) Sollte der Parser nicht UTF-16 unterstützen? Soweit ich informiert bin sollte das ohne Probleme gehen. :confused:
b) Da ich das Encoding nicht einfach "ändern" kann, wie gehe ich am besten vor? Parser-System austauschen in der Hoffnung, dass UTF-16 anderweitig unterstützt wird? Oder eine Art Konverter vorschalten, so dass ich praktisch "unsichtbar" das Format ändere. Programmieraufwand ist am Ende egal, meine Frage zielt eher auf Machbarkeit bzw Performanz ab. Das Servlet läuft nicht alleine in seiner Umgebung, und darf auf keinen Fall sinnlos Rechenzeit verschwenden.
c) Oder hab ich einen riegerosen Denkfehler dadrin? Muß nun sagen, dass ich bei Codierungen nicht der fitteste bin.

Danke schonmal für alle Formen von Tipps und Hinweisen. :)
 
Zurück