【问题标题】:XMLSerializer not working. No exceptionXMLSerializer 不工作。没有例外
【发布时间】:2015-01-08 06:34:08
【问题描述】:

我正在使用下面的代码来序列化一个类。

    public static string SerializeToString<T>(this T toSerialize)
    {
        XmlSerializer serializer = new XmlSerializer(toSerialize.GetType());
        using (StringWriter textWriter = new StringWriter())
        {
            serializer.Serialize(textWriter, toSerialize);
            return textWriter.ToString();
        }

    }

此代码间歇性工作。有时它返回序列化的字符串,有时不返回。任何地方都不例外。

我错过了什么吗?

【问题讨论】:

    标签: c# asp.net-mvc xml-serialization


    【解决方案1】:

    在调用ToString()之前,您需要FlushStringWriter

    public static string SerializeToString<T>(this T toSerialize)
    {
        XmlSerializer serializer = new XmlSerializer(toSerialize.GetType());
        using (StringWriter textWriter = new StringWriter())
        {
            serializer.Serialize(textWriter, toSerialize);
            textWriter.Flush();
            return textWriter.ToString();
        }
    
    }
    

    当数据写入StringWriter 时,它首先写入内部缓冲区。调用ToString()时无法识别内部缓冲区中的数据。

    您也可以使用以下代码:

        public static string SerializeToString<T>(this T toSerialize)
        {
            XmlSerializer serializer = new XmlSerializer(toSerialize.GetType());
    
            StringBuilder stringBuilder = new StringBuilder();
    
            using (StringWriter textWriter = new StringWriter(stringBuilder))
            {
                serializer.Serialize(textWriter, toSerialize);
            }
    
            return stringBuilder.ToString();
        }
    

    这里StringWriter 将其数据写入StringBuilder。通过使用using 关键字,StringWriter 在离开块时自动关闭,这迫使StringWriter 将其数据刷新到给定的StringBuilder

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-10
    • 2015-02-19
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 1970-01-01
    • 2016-03-10
    • 2014-07-16
    相关资源
    最近更新 更多