我有不同版本的架构。我只是在将来的版本中添加其他属性(不删除或不更改数据类型)。我想处理来自未来版本的数据。旧版架构的解组工作正常,但是当我尝试使用较旧的xsd从较高版本解组xml时,它会失败。我想避免/忽略那个额外的属性。请建议一种方法。
答案 0 :(得分:0)
旧架构(xsd)文件不包含在较新架构文件中指定为允许的属性。当unmarshaller尝试验证包含新架构针对旧架构指定的新属性的文档时,它会失败,因为旧架构不知道新属性。
然而,documentation here(特别参见4.2.1)指定unmarshaller简单地跳过无效内容,这听起来像你想要的。我无法独立验证这一点,因为我没有尝试过。您使用的是当前版本的JAXB吗?
答案 1 :(得分:0)
没有问题,因为所有额外的内容都会被忽略。
保留向后兼容性
必须添加新元素/属性才能使用。它必须存在(即minOccurs="0"
)。
保留向前兼容性
始终针对当前版本的XML架构进行验证。为此,必须始终在同一位置找到最新版本的XML模式。