如何在Java应用程序中维护xsd文件的增量版本(ddex规范)?

如何在Java应用程序中维护xsd文件的增量版本(ddex规范)?,java,xml,xsd,jaxb,ddex,Java,Xml,Xsd,Jaxb,Ddex,场景 我们有一个java应用程序,它承载解析各种规格版本的逻辑。对于每个新的ddex版本,我们目前都维护一个相应的映射器,以将xml映射到我们的应用程序类。这就是过程的样子: DDEX XML->JAXB->JAXB自动生成JAVA类->映射器代码->应用程序类 从长远来看,这种设计是不可维护的。对于每个ddex版本,它都会导致大量代码重复和重复测试工作,其中包含许多字段,与以前的版本相同 我想知道怎样才能设计得更好。如果需要,我们也可以切换到其他xml解析器 注意:我看到了这个,但也想知道d

场景

我们有一个java应用程序,它承载解析各种规格版本的逻辑。对于每个新的ddex版本,我们目前都维护一个相应的映射器,以将xml映射到我们的应用程序类。这就是过程的样子:

DDEX XML->JAXB->JAXB自动生成JAVA类->映射器代码->应用程序类

从长远来看,这种设计是不可维护的。对于每个ddex版本,它都会导致大量代码重复和重复测试工作,其中包含许多字段,与以前的版本相同


我想知道怎样才能设计得更好。如果需要,我们也可以切换到其他xml解析器

注意:我看到了这个,但也想知道ddex的具体想法。另外,答案已经有10年多的历史了,所以我想看看现在是否还有其他可用的方法。

在我看来,当您必须处理频繁的模式更改时,JAXB(以及通常的数据映射技术)是错误的选择。我看到项目在这方面进展得很糟糕

您不应该将特定的模式结构映射到特定的Java类,而应该使用一个通用的树模型,如DOM、JDOM2或XOM(DOM是三种模型中最古老、最流行、最差的一种,我将使用JDOM2)

使用通用树模型,您可以将应用程序设计为能够适应传入XML中的大多数更改

或者,使用面向XML的编程语言,如XSLT或XQuery

我不熟悉ddex,所以这个答案并不特定于该环境