Forums Neueste Beiträge
 

XmlSerializer und (wahrscheinlich) Encoding Problem

30/09/2007 - 13:14 von Michael Meyer | Report spam
Hallo,

ich habe mir einen Export für GPX Dateien (wird für GPS Geràte
verwendet) geschrieben. Dafür habe ich mir eine Klasse GPX usw. gebaut,
die ich dann per XmlSerializer als GPX (ist XML Format) wegschreibe. Das
funktioniert auch alles wunderbar. Goolge Earth und diverse andere
Programme haben auch überhaut kein Problem die Dateien zu öffnen.

Wenn ich aber nun JOSM (Editor für Openstreetmap, Java) verwende, um die
Datei zu öffnen, bekomme ich eine

org.xml.sax.SAXParseException: Content is not allowed in prolog.

Exception geschmissen. Diese wird geworfen, wenn mit dem Content etwas
nicht in Ordnung ist. Nachdem ich die Datei mit einem Hexeditor geöffnet
habe, ist mir aufgefallen, daß sich zu Beginn der GPX Datei die Zeichen
'!?' befinden. Wenn ich die Datei mit einem Editor öffne und wieder
abspeichere, hat auch JOSM keine Probleme mehr damit. Hat irgendwer eine
Idee, wie ich das Problem lösen kann?

Der Sourcecode für die Serializierung:



XmlSerializer xs = new XmlSerializer(typeof(GPX));

XmlWriterSettings wrset = new XmlWriterSettings();
wrset.Indent = true;
wrset.Encoding = System.Text.Encoding.UTF8;

XmlWriter sw = XmlWriter.Create(filename, wrset);

xs.Serialize(sw, gpx);
sw.Flush();
sw.Close();

-

Gruß

Michael


http://www.mchme.de
 

Lesen sie die antworten

#1 Martin Honnen
30/09/2007 - 14:34 | Warnen spam
Michael Meyer wrote:

Wenn ich aber nun JOSM (Editor für Openstreetmap, Java) verwende, um die
Datei zu öffnen, bekomme ich eine

org.xml.sax.SAXParseException: Content is not allowed in prolog.

Exception geschmissen. Diese wird geworfen, wenn mit dem Content etwas
nicht in Ordnung ist. Nachdem ich die Datei mit einem Hexeditor geöffnet
habe, ist mir aufgefallen, daß sich zu Beginn der GPX Datei die Zeichen
'!?' befinden. Wenn ich die Datei mit einem Editor öffne und wieder
abspeichere, hat auch JOSM keine Probleme mehr damit.




Die drei Bytes sind die UTF-8 BOM, mit denen àltere
Java-Parser-Implementierungen z.T. nicht klar kommen.


wrset.Encoding = System.Text.Encoding.UTF8;



Versuche es mit
wrset.Encoding = new System.Text.UTF8Encoding(false);
dann wird keine BOM geschrieben.

Oder löse das Problem auf der Java-Seite und benutze da z.B. eine
aktuelle Version von Xerces:




Martin Honnen MVP XML
http://JavaScript.FAQTs.com/

Ähnliche fragen