【问题标题】:Migrating objects between different schema versions with JAXB使用 JAXB 在不同模式版本之间迁移对象
【发布时间】:2013-12-10 13:08:00
【问题描述】:

我们使用 JAXB 将序列化对象存储在 JCR 中。 XML 文件使用版本化模式。显然对象的类最终会改变,所以我们会有更新的模式版本。

我们如何自动将旧的存储对象迁移到新版本? JAXB 是否在那里提供任何支持,还是 wrong soultion?目前我们正在使用 XSLT 脚本来转换 XML 文件,但是如果我们可以自动从旧的序列化对象创建新的对象版本当然会更好。

对对象的预期更改可以是所有内容:添加或删除成员、重命名成员和更改成员类型。

【问题讨论】:

  • 架构的不同版本有何不同?

标签: java jaxb xml-serialization migration xsd


【解决方案1】:

诀窍是使较新的架构版本向后兼容以前的架构。 (请注意,这意味着您的架构总是会变得更大。)

要消除在旧模式中有效的新模式中的元素或属性,您可以在新模式中使其使用可选(minOccurs="0" 用于元素,use="optional" 用于属性。)这将允许在旧模式下编组的数据在新模式下被解组为有效;然后,您可以在删除有问题的元素后将数据编组回新架构下。

要将不在旧模式中的元素添加到新模式中,请遵循相同的逻辑:在新模式中将其设为可选(这允许旧数据被解组为有效);然后,您可以添加新元素或属性,然后再将其编组。

【讨论】:

    猜你喜欢
    • 2018-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 2011-09-14
    相关资源
    最近更新 更多