C# xml序列化为带空格的字符串

C# xml序列化为带空格的字符串,c#,xml,C#,Xml,我有一些数据要序列化为XML字符串,在内存中保留空白。我尝试了以下方法: [Serializable] public class MyClass { public string NormalField {get; set;} public string WhitespaceField {get; set;} } string GetXml(List<MyClass> data) { st

我有一些数据要序列化为XML字符串,在内存中保留空白。我尝试了以下方法:

    [Serializable]
    public class MyClass
    {
        public string NormalField {get; set;}
        public string WhitespaceField {get; set;}
    }

    string GetXml(List<MyClass> data)
    {
        string xml = "";

        XmlSerializer ser = new XmlSerializer(typeof(List<MyClass>));
        using (MemoryStream xmlStream = new MemoryStream())
        {
            ser.Serialize(xmlStream, data);
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.PreserveWhitespace = true;
            xmlStream.Position = 0;
            xmlDoc.Load(xmlStream);
            xml = xmlDoc.OuterXml;
        }

        return xml;
    }

    void Execute()
    {
        List<MyClass> list = new List<MyClass>();
        list.Add(new MyClass { NormalField = "a", WhitespaceField = "   456" });
        string xml = GetXml(list);
    }
但是,不会保留空白。具体来说,我的数据中有一个字段是一个带前导空格的字符串,我希望保留它,但它不会发生。
我做错了什么?

在加载到XmlDocument之前,您不需要重置流的Position属性吗?另外,在查看OuterXml之前,请先查看文档。换言之,请确保它不会从外部XML中剥离空白。发布一个如何,以便我们可以复制和粘贴您的代码并尝试回答。我添加了一个功能完整的示例。我刚刚意识到它实际上是有效的,只有VS中的XML可视化工具显示了错误的数据,没有前导空格。文本可视化工具显示正确的数据。