XML-Deserialisierung Standardisierung von Zeilenenden, wie kann ich sie stoppen? (.NETZ)

8

Ich habe eine Klasse mit einer Eigenschaft, die mit [XmlText] markiert ist und die mehrzeilige Eingabe akzeptiert. In meiner XML-Datei habe ich überprüft, dass die Zeilenenden innerhalb des Textinhalts infact "\r\n" sind, genau wie der Rest der Datei.

Der Code, den ich zur Deserialisierung verwende, ist:

%Vor%

Aber innerhalb des Setter für die Eigenschaft [XmlText] hat value bereits "\n" als Zeilenende. Der Hauptgrund dafür ist, dass "\n" -Zeilenendungen in TextBox nicht richtig angezeigt werden ... Ich bin mir nicht ganz sicher, welcher Teil die Probleme verursacht, aber ich dachte, dass jemand hier etwas verlieren könnte Licht auf die Situation.

    
Matthew Scharley 12.07.2009, 07:04
quelle

2 Antworten

10

Ich habe den Beispielcode geändert, um den Code schneller in eine C # -Entwicklungsumgebung zu bringen. Ich habe auch bewusst keine Anweisungen verwendet, es ist nur Beispielcode.

Für das Beispiel haben wir die folgende Klasse, die wir serialisieren möchten:

%Vor%

Wenn wir versuchen, diese Zeile so zu serialisieren und zu deserialisieren, wie Sie die Zeile beschreiben, in der "Same" ausgedruckt wird, wird sie nicht ausgeführt (ich gehe davon aus, dass der Code unter Windows mit Environment.NewLine ausgeführt wird) \ n "Wenn Sie nicht sind:

%Vor%

Dies kann jedoch behoben werden, indem manuell ein XmlTextReader dem Serializer zugewiesen wird, dessen Eigenschaft Normalization auf false gesetzt ist (der standardmäßig im Serializer verwendete Wert ist true):

%Vor%

Dasselbe wird nun ausgedruckt, und wenn ich nicht falsch liege, ist das Verhalten, das Sie benötigen?

    
RichardOD 12.07.2009, 09:36
quelle
4

Wenn Sie serialisiert haben , dann wäre XmlWriterSettings.NewLineHandling ( Replace ) einen Versuch wert - aber das hilft nicht beim Lesen. Ein bisschen grungy, aber vielleicht direkt im Setter:

%Vor%     
Marc Gravell 12.07.2009 07:14
quelle

Tags und Links