Forums Neueste Beiträge
 

XmlSerializer: Probleme mit speziellen ASCII Charactern

08/01/2010 - 21:46 von Christian Treffler | Report spam
Ich rufe über die WebClient-Klasse Daten im XML-Format ab (.Net 2.0,
C#).
Der Code sieht ungefàhr so aus:

string url; // URL, von der die XML-Daten abgerufen werden
XmlSerializer XmlSer = new XmlSerializer(/* Typ der Klasse, die die
Xml Struktur vorgibt */);

using (WebClient client = new WebClient())
{
Stream DStream = client.OpenRead(url);
XmlReaderSettings xrs = new XmlReaderSettings();
xrs.CloseInput = true;
using (XmlReader reader = XmlReader.Create(DStream, xrs))
{
Data = XmlSer.Deserialize(reader);
// object Data nimmt die Daten entgegen
reader.Close();
}
}

Prinzipiell funktioniert das Ganze. Probleme gibt es, wenn die XML Daten
ASCII Zeichen >128 enthalten. Wenn da zum Beispiel ein '€' (ASCII 128)
drin steckt, wird vom XmlSerializer Object eine Exception ausgelöst.

Gibt es irgendeine Möglichkeit, dass zu verhindern?

TIA,
Christian
 

Lesen sie die antworten

#1 Martin Honnen
09/01/2010 - 13:26 | Warnen spam
Christian Treffler wrote:

Prinzipiell funktioniert das Ganze. Probleme gibt es, wenn die XML Daten
ASCII Zeichen >128 enthalten. Wenn da zum Beispiel ein '€' (ASCII 128)
drin steckt, wird vom XmlSerializer Object eine Exception ausgelöst.

Gibt es irgendeine Möglichkeit, dass zu verhindern?



Stelle sicher, dass das XML-Dokument, das du làdst, korrekt kodiert ist
und eine XML-Deklaration hat, die die verwendete Kodierung angibt, so du
nicht UTF-8 oder UTF-16 verwendest.

Das Euro-Zeichen hat z.B. in Windows-1252 den Code 128, dann sollte das
XML-Dokument mit
<?xml version="1.0" encoding="Windows-1252"?>
starten, und dann sollte der XML-Parser auch keine Probleme machen. Aber
Windows-1252 ist jetzt auf Grund deiner Angabe geraten, du musst selbst
wissen, welche Kodierung verwendet wurde, um das Dokument zu erstellen,
und diese entsprechend angeben.

Den WebClient brauchst du übrigens nicht, XmlReader.Create(url) sollte
reichen, denn XmlSerializer.Deserialize erlaubt ja als Argument einen
XmlReader.



Martin Honnen MVP XML
http://msmvps.com/blogs/martin_honnen/

Ähnliche fragen