gpt4 book ai didi

c# - 具有向后兼容性的 XML 读取

转载 作者:太空宇宙 更新时间:2023-11-03 16:11:10 24 4
gpt4 key购买 nike

我目前正在使用的 XML 是直接使用 XML 序列化程序(序列化类及其嵌套计数器部分)形成的

此外,如果添加新的Property 直接由序列化程序处理,但是当删除属性(值类型)删除整个类或添加类

我想阅读旧的和新的 XML 文件....我似乎无法弄清楚如何..

过程

Expected XML upgrade process

一些方法

但我不认为这些对于可维护的代码有好处

1) 制作自定义 XML 解析器(这将不太灵活,因为每次更改完成时,解析器都必须更新并因此再次测试)。
2) 使用多个模型,然后从旧模型迁移到新模型(获取基本组件)
3) 导出旧文件并导入新文件(这还需要另一个 XML 文件,可能与第 2 点有关)
4)任何其他方式(请建议)

我不太精通 XML 及其版本控制。对于这个或我可以用来代替 XML 的任何其他文件类型/DB,XML 也是一个不错的选择

这方面的任何帮助都会有所帮助。

最佳答案

在大多数情况下,XmlSerializer 已经内置了非常好的版本支持。在大多数情况下,如果您添加或删除元素,这不是问题:额外的(意外的)数据将被静默忽略- 或者放入 [XmlAnyElement]/[XmlAnyAttribute] 成员(如果有)进行往返。任何丢失的数据都不会被初始化。唯一值得注意的问题是子类型,但添加和删除子类型(或整个类型)对于任何序列化程序来说都是相当基础的。对于子类型,一个常见的选择是:使用单一模型,但不要删除任何子类型(添加子类型很好,假设您不需要向前兼容)。但是,如果这不可能,那么多个模型(每个修订版的模型)也是一个不错的方法。

关于c# - 具有向后兼容性的 XML 读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17399133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com