XML(反)序列化和模式升级

时间:2012-02-10 14:34:08

标签: c# .net xml serialization xml-serialization

我有一个XML序列化类的复杂图表,我能够(de)序列化到硬盘就好了。但是,如何处理图表架构结构的大量更改?是否有一些机制来处理XML模式升级?有些类允许我将旧数据迁移到新格式吗?

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


我找到了Object graph serialization in .NET and code version upgrades,但我不认为当模型发生重大变化时,相关文章会适用。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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

使用此方法我加载并保存基于我的对象的新xml架构。