我有一个XML序列化类的复杂图表,我能够(de)序列化到硬盘就好了。但是,如何处理图表架构结构的大量更改?是否有一些机制来处理XML模式升级?有些类允许我将旧数据迁移到新格式吗?
当然我可以使用XmlReader / XmlWriter,遍历每个节点和属性并编写几千行代码来将数据转换为新格式,但也许有更好的方法?< / p>
我找到了Object graph serialization in .NET and code version upgrades,但我不认为当模型发生重大变化时,相关文章会适用。
答案 0 :(得分:2)
您可以使用XSLT,而不是使用XmlReader
/ XmlWriter
编写数千行代码来转换文件。我们仍在谈论数百行代码,执行速度可能较慢,但如果你擅长XSLT,你可以更快地完成它。
另一种方法是构建一个链接旧类和新类的C#程序(当然,您需要重命名旧类以避免命名冲突)。该程序将从磁盘加载OldMyClass
,从其属性值构造NewMyClass
,并将NewMyClass
序列化到磁盘。从本质上讲,这种方法将转换任务转移到C#领域,这对您来说可能更为熟悉。
答案 1 :(得分:0)
在这种情况下,我保留对象的更改并通过XmlSerializer重新创建我的xml:http://support.microsoft.com/kb/815813
使用此方法我加载并保存基于我的对象的新xml架构。