c# – 升级XML文件的序列化程序
发布时间:2020-12-15 21:42:52 所属栏目:百科 来源:网络整理
导读:我正在修改遗留应用程序,该应用程序使用XmlSerializer将 XML文件序列化/反序列化为类.要求是更改新应用程序版本中的某个属性,以便可以像以前一样加载旧文件,但下次应该保留升级(更一般)的属性.旧财产将在下次保存时被抛弃. 为了更好地解释它,这是文件的外观
我正在修改遗留应用程序,该应用程序使用XmlSerializer将
XML文件序列化/反序列化为类.要求是更改新应用程序版本中的某个属性,以便可以像以前一样加载旧文件,但下次应该保留升级(更一般)的属性.旧财产将在下次保存时被抛弃.
为了更好地解释它,这是文件的外观: <Data> <ImportantAnalysisResults> <ImportantAnalysisResult>...</ImportantAnalysisResult> <ImportantAnalysisResult>...</ImportantAnalysisResult> <ImportantAnalysisResult>...</ImportantAnalysisResult> </ImportantAnalysisResults> </Data> 新的应用程序版本应该正确加载文件,并在下次保存时用新的替换元素名称: <Data> <Results> <Result>...</Result> <Result>...</Result> <Result>...</Result> </Results> </Data> <数据> element有更多属性,但这是需要更改的属性.此外,ImportantAnalysisResult继承自Result. 在我的Data类中,我尝试过这样的事情: class Data { [Obsolete("Used for backward compatibility. Use Results instead.")] [XmlArrayItem("ImportantAnalysisResult",typeof(Result))] public List<Result> ImportantAnalysisResults { get { return _results; } } public List<Result> Results { get { return _results; } } } 但是这仍然会将旧属性保存回新文件中.什么是使重要分析结果在下次保存时消失的最佳方法? 有没有办法在加载时简单地将旧属性“映射”到新的Results属性? 解决方法
一种方法是使用
XmlAttributeOverrides.它可以帮助您覆盖xml序列化.希望能帮助到你.
XmlAttributeOverrides xmlAttributeOverrides = new XmlAttributeOverrides(); //Add overrides to xmlAttributeOverrides,use sample from internet XmlSerializer serializer = new XmlSerializer(typeof(Data),XmlAttributeOverrides); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |