Следующий (бездонный) код демонстрирует, как стандартная сериализация / десериализация в VB теряет CR при десериализации. Это можно преодолеть, применив XmlAttribute (DataType: = "string") "к описанию. Почему он это делает? Я хотел бы исправить это, не применяя 'LF' -> 'CR''LF' в каждом затронутом классе. Это исправляет ошибку в существующих XML-файлах, созданных без XmlAttribute!
Imports System.Xml.Serialization
Imports System.Xml
Imports System.IO
Public Class Form1
Public Class MyObject
Public Description As String
End Class
Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim x As New MyObject
x.Description = "Hello" + vbCrLf + "World"
Dim serializer As New XmlSerializer(GetType(MyObject))
Dim writer As StreamWriter = New StreamWriter("c:\temp\test.xml")
serializer.Serialize(writer, x)
writer.Close()
For i As Integer = 0 To x.Description.ToCharArray.Length - 1
Debug.Print(Asc(x.Description.ToCharArray(i, 1)))
Next
Debug.Print("**********************")
Dim reader As New StreamReader("c:\temp\test.xml")
Dim newObj As MyObject = CType(serializer.Deserialize(reader), MyObject)
For i As Integer = 0 To newObj.Description.ToCharArray.Length - 1
Debug.Print(Asc(newObj.Description.ToCharArray(i, 1)))
Next
End Sub
End Class