XML(反)序列化和架构升级

本文关键字:序列化 XML | 更新日期: 2023-09-27 18:23:57

我有一个XML可序列化类的复杂图,我可以很好地(反)序列化到硬盘。但是,我如何处理图形模式结构的巨大更改?是否有一些处理XML模式升级的机制?一些类允许我将旧数据迁移到新格式?

当然,我可以使用XmlReader/XmlWriter,遍历每个节点和属性,并编写数千行代码将数据转换为新格式,但也许还有更好的方法?


我在.NET中发现了对象图序列化和代码版本升级,但我认为当模型发生重大更改时,链接的文章不适用。

XML(反)序列化和架构升级

您可以使用XSLT,而不用编写数千行代码来使用XmlReader/XmlWriter转换文件。我们仍在讨论数百行代码,也许执行速度较慢,但如果您擅长XSLT,您可以更快地完成它。

另一种方法是构建一个连接旧类和新类的C#程序(当然,您需要重命名旧类以避免命名冲突)。该程序将从磁盘加载OldMyClass,根据其属性值构造NewMyClass,并将NewMyClass序列化到磁盘。从本质上讲,这种方法将转换任务转移到C#领域,这对您来说可能要熟悉得多。

在这种情况下,我将更改保留在对象中,并通过XmlSerializer重新创建xml:http://support.microsoft.com/kb/815813

这样,我就可以在我的对象中加载并保存新的xml模式。

相关文章: