C# XmlSerializer不可靠还是我做错了什么?

C# XmlSerializer不可靠还是我做错了什么?,c#,.net,serialization,xml-serialization,C#,.net,Serialization,Xml Serialization,如果运行此代码: public class Program { public class MyClass { public string Text { get; set; } } static MyClass myClass = new MyClass(); static string Desktop = "C:\\Users\\Juan Luis\\Desktop\\"; static void Main(string[] a

如果运行此代码:

public class Program
{
    public class MyClass
    {
        public string Text { get; set; }
    }

    static MyClass myClass = new MyClass();
    static string Desktop = "C:\\Users\\Juan Luis\\Desktop\\";

    static void Main(string[] args)
    {
        myClass.Text = "\r\nhello";
        Console.WriteLine((int)myClass.Text[0]);
        Save(Desktop + "file.xml", myClass);
        myClass = Load(Desktop + "file.xml");
        Console.WriteLine((int)myClass.Text[0]);
        Console.Read();
    }

    private static MyClass Load(string fileName)
    {
        MyClass result = null;
        using (Stream stream = File.Open(fileName, FileMode.Open))
        {
            XmlSerializer xmlFormatter = new XmlSerializer(typeof(MyClass));
            result = (MyClass)xmlFormatter.Deserialize(stream);
        }
        return result;
    }

    private static void Save(string fileName, MyClass obj)
    {
        using (Stream tempFileStream = File.Create(fileName))
        {
            XmlSerializer xmlFormatter = new XmlSerializer(typeof(MyClass));
            xmlFormatter.Serialize(tempFileStream, obj);
        }
    }
}
输出将为13、10。
XmlSerializer
正在删除回车符。在我的例子中,这是一个问题,因为我需要在序列化和反序列化的类中比较相等的字符串,这会导致序列化之前相等的两个字符串在序列化之后不相等。最好的工作是什么

编辑:阅读答案后,这是我的解决方案,以防对任何人都有帮助:

public class SafeXmlSerializer : XmlSerializer
{
    public SafeXmlSerializer(Type type) : base(type) { }

    public new void Serialize(Stream stream, object o)
    {
        XmlWriterSettings ws = new XmlWriterSettings();
        ws.NewLineHandling = NewLineHandling.Entitize;

        using (XmlWriter xmlWriter = XmlWriter.Create(stream, ws))
        {
            base.Serialize(xmlWriter, o);
        }
    }
}

我不会确切地说它不可靠:
XmlSerializer
在元素中的文本周围去除空白。如果它不这样做,那么XML文档的含义将根据您在IDE中格式化它们的方式而改变

<>你可以考虑把文本放在一个CDATA部分中,这样可以准确地保存内容。比如说,


编辑:这似乎对问题所在有了更好的解释,还有一个更简单的解决方案-

您的意思是,如果我的文本是
“hello”
,它将被序列化为
“hello”
?我刚刚测试了它,它确实序列化了空格。无论如何我都会检查你的链接。从内存来看,它可以序列化,但在反序列化时允许去掉空白。这将解决我的问题。。。但是回车是 ;而不是 ;如答案中所述。我还需要做些什么来确保我的字符串在反序列化后保持相等?