XML Serialization最后生成随机字符串? C#
发布时间:2020-12-16 23:50:00 所属栏目:百科 来源:网络整理
导读:参见英文答案 FileMode.Open and FileMode.OpenOrCreate difference when file exists? c# bug?1个 在分类并保存到文件时,有时会出现序列化输出如下所示的错误: ?xml version="1.0"?Template xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:
参见英文答案 >
FileMode.Open and FileMode.OpenOrCreate difference when file exists? c# bug?1个
在分类并保存到文件时,有时会出现序列化输出如下所示的错误: <?xml version="1.0"?> <Template xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Route>Some Route</Route> <TradePack>Something Here</TradePack> <Transport /> </Template>te> ------> Notice this extra string? 我正在序列化的类看起来像这样: [Serializable] public class Template { public string Route = string.Empty; public string TradePack = string.Empty; public string Transport = string.Empty; public Template() { } } 我似乎无法弄清楚为什么会这样.这是我的序列化程序类: public static bool Save(object obj,string path) { try { XmlSerializer writer = new XmlSerializer(obj.GetType()); using (var stream = new FileStream(path,FileMode.OpenOrCreate,FileAccess.ReadWrite,FileShare.ReadWrite)) { writer.Serialize(stream,obj); } return true; } catch { } return false; } 谢谢!
附加输出可能是以前版本的输出文件(具有相同名称)的剩余部分.
您可以通过将OpenOrCreate更改为仅限创建来解决此问题.这样输出文件如果已经存在则被截断. 更简单的方法是使用File.Create(path): XmlSerializer writer = new XmlSerializer(obj.GetType()); using (var stream = File.Create(path)) { writer.Serialize(stream,obj); } 顺便说一句:通常最好只让异常冒泡调用堆栈,直到你可以对它们做一些有意义的事情.只是默默地吞下异常,而是返回一个可能永远不会被检查的状态标志隐藏实际问题,可能会导致以后的进一步问题并使问题分析变得不必要地困难. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |