Entwickler-Ecke

IO, XML und Registry - XmlSerializer und Sonderzeichen


mannyk - So 07.08.11 11:27
Titel: XmlSerializer und Sonderzeichen
Hi Leute,

ich habe das Problem, dass die Properties eines Objektes, welches ich serialisieren/deserialisieren will, strings enthalten kann, welche Sonderzeichen enthalten (z.B. \t, \n für Pfadangaben). Wenn ich diese Objekte nun serialisiere, so werden die Sonderzeichen in der XML-Datei interpretiert, was ich natürlich nicht will.

Nun meine Frage: Wie umgehe ich diese Interpretation am Einfachsten?

Anbei ein Code-Ausschnitt, den ich verwende:

C#-Quelltext
1:
2:
XmlTextWriter writer = new XmlTextWriter(new FileStream("file.xml", FileMode.Create), Encoding.UTF8);
m_serializer.Serialize(writer, fileLibrary);


Danke und Grüße,
mannyk


Th69 - So 07.08.11 12:47

Hallo mannyk,

was genau meinst du mit
mannyk hat folgendes geschrieben:
Wenn ich diese Objekte nun serialisiere, so werden die Sonderzeichen in der XML-Datei interpretiert, was ich natürlich nicht will.
? Könntest du ein Beispiel der XML-Datei posten?

Und was passiert, wenn du diese wieder deserialisierst?


mannyk - So 07.08.11 13:13

Hallo,

ich habe z.b. ein Property, in welchem ein Dateipfad gespeichert wird.

C#-Quelltext
1:
Path = @"C:\test.mp3";                    


Wird dies nun serialisiert, so steht dann in der xml datei:

XML-Daten
1:
2:
3:
4:
<Track>
    <Uid>dc2c3422-574d-4355-a12b-5b50326c740b</Uid>
    <Path>C:   est.mp3</Path>
</Track>

Das Sonderzeichen "\t" wird also als Tabulator interpretiert.

Ich habe den Mechanismus nun in ein anderes Projekt eingebettet und komischerweise funktioniert es jetzt ohne Probleme - es wird also nicht interpretiert. Ich habe allerdings keine Ahnung, warum das jetzt nicht mehr passiert.
Lg,
mannyk


Kha - So 07.08.11 17:37

Das kann eigentlich nur dadurch passiert sein, dass du vor einem String-Literal das @ vergessen hast.