由于平台供应商需要将存储机制存储在XElement对象中,而不是存储在我在其数据库中创建的数据表中,因此我正在重新编写一个项目。它正在变得痛苦,我需要一些洞察力。
我可以使用XmlSerializer将我的对象图转换为Xml,并对给定的XElement对象进行读写,但是当我需要更改对象图时,我不确定如何升级Xml数据。
有没有人遇到过这种情况,哪些文章被证明是学习如何构建这样一种更新方法的最佳方法。谢谢。
发布于 2010-07-01 06:50:38
我以前也遇到过这种令人沮丧的情况...我认为这不能使用XmlSerializer来完成。XmlSerializer编译一个序列化例程,该例程是围绕当前类型层次结构自定义构建的。如果更改太多,XML将与新的类结构不兼容。
我不认为会生成任何XML模式,唯一的“模式”是编译的ad-hoc XML序列化程序代码。
你可以通过1)创建反映你的改变的新类,2)将XML反序列化为旧类,3)在新旧对象之间应用变形,4)序列化新对象,5)将类的名称改为旧的,6)替换XML中的临时名称,
但这是非常痛苦的(尽管这可能是一次性的)。
如果您需要处理频繁的更改(或者如果您使用不利于序列化的编译器,如当前的F# one),这里最好的想法是编写您自己的XmlSerializer (可能使用Linq2XML)来处理代码更改。
https://stackoverflow.com/questions/3140909
复制相似问题