我使用以下方法将各种对象序列化为 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 个节点深。
我错过了什么吗?
最佳答案
xmlWriter
在您调用 ToString()
时未刷新;尝试:
using (var xmlWriter = XmlWriter.Create(builder))
{
serializer.WriteObject(xmlWriter, item);
}
return builder.ToString();
这会在 xmlWriter
上执行 ToString()
Dispose()
,这意味着它将刷新任何缓冲数据到输出(在本例中为 builder
)。
关于c# - 使用 DataContractSerializer 序列化时缺少 XML 的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3682486/