使用JAXB在解组中的向前兼容性

时间:2013-12-02 06:50:49

标签: java xml jaxb unmarshalling

我有不同版本的架构。我只是在将来的版本中添加其他属性(不删除或不更改数据类型)。我想处理来自未来版本的数据。旧版架构的解组工作正常,但是当我尝试使用较旧的xsd从较高版本解组xml时,它会失败。我想避免/忽略那个额外的属性。请建议一种方法。

2 个答案:

答案 0 :(得分:0)

旧架构(xsd)文件不包含在较新架构文件中指定为允许的属性。当unmarshaller尝试验证包含新架构针对旧架构指定的新属性的文档时,它会失败,因为旧架构不知道新属性。

然而,documentation here(特别参见4.2.1)指定unmarshaller简单地跳过无效内容,这听起来像你想要的。我无法独立验证这一点,因为我没有尝试过。您使用的是当前版本的JAXB吗?

答案 1 :(得分:0)

没有架构验证

没有问题,因为所有额外的内容都会被忽略。

使用架构验证

保留向后兼容性

必须添加新元素/属性才能使用。它必须存在(即minOccurs="0")。

保留向前兼容性

始终针对当前版本的XML架构进行验证。为此,必须始终在同一位置找到最新版本的XML模式。