繁体   English   中英

使用DataContractSerializer进行序列化时缺少XML的结尾

[英]Missing the end of the XML when serializing with DataContractSerializer

我有以下方法用于将各种对象序列化为XML。 然后我将XML写入文件。 所有对象都具有适当的[DataContract][DataMember]属性。

    public static string Serialize<T>(T item)
    {
        var builder = new StringBuilder();
        var serializer = new DataContractSerializer(typeof(T));

        using (var xmlWriter = XmlWriter.Create(builder))
        {
            serializer.WriteObject(xmlWriter, item);
            return builder.ToString();
        }
    }

序列化工作正常,但是,我错过了内容的结尾。 即,字符串不包含完整的XML文档:结尾被截断。 有时,字符串会在标记的中间结束。

似乎没有混合长度会导致问题:我有18k的字符串是不完整的,我有80k的字符串也是不完整的。

XML结构非常简单,只有大约6-8个节点。

我错过了什么吗?

在调用ToString() ,不会刷新xmlWriter ; 尝试:

    using (var xmlWriter = XmlWriter.Create(builder))
    {
        serializer.WriteObject(xmlWriter, item);
    }
    return builder.ToString();

这在xmlWriter上的Dispose() ToString() 之后执行ToString() ,这意味着它会将任何缓冲的数据刷新到输出(在本例中为builder )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM