我正在寻找一种从Java类使用通用XML生成器的方法,并且如果可能的话,能够使用XSD生成给定的Java类先前版本的XML。
示例:
今天我将使用属性Object1
和Property1
创建Property2
,我会使用JAXB生成它的XSD并将其命名为today.xsd。
明天我想将Property3
添加到Object1
,我会创建一个新的XSD文件并将其命名为tomorrow.xsd。在此之后,我希望能够使用具有2个属性的Object1和具有3个属性的两个版本的数据生成XML,如果可能的话,使用生成的XSD。
我的实际案例使用了大量具有大量属性的类,版本控制的数量可能很大。 我想为每个版本存储XSD,并通过动态指定包含版本号的XSD名称从Java类生成XML。
是否可以实现上述要求,或者您是否有类似的解决方案来满足我的需求?
答案 0 :(得分:0)
JAXB是一个非常严格的框架,并不支持您想要做的事情。
当您需要支持相同"对象"的不同版本时,有一些方法。
答案 1 :(得分:0)
我不喜欢@ Augusto上面的答案,但我认为问题是用JAXB生成XSD,因为这将是不灵活的。 它不适用于所有情况,但是对于您所描述的相对简单的演变,您应该能够(手动)编写一个XSD,以保持与前几天XSD的向后兼容性,其中新属性基本上是可选的。通过从最新的XSD重新生成JAXB类,您应该能够从任何时间点读取xml到最新的JAXB类中。