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

How to maintain incremental versions of xsd files (ddex spec) in Java application?

场景

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

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

此设计无法长期维护 运行。对于每个包含大量字段的 ddex 版本,它会导致大量代码重复和重复测试工作,因为它来自以前的版本。


我想知道这样的系统如何才能设计得更好。如果需要,我们也愿意切换到其他 xml 解析器。

注意:我看到了这个 answer,但也想知道任何特定于 ddex 的想法。加上答案已经超过 10 年了,所以想看看现在是否还有其他可用的东西。

在我看来,当您必须处理频繁的模式更改时,JAXB(以及通常的数据映射技术)是错误的选择。我已经看到项目在这方面严重失败。

与其将特定的模式结构映射到特定的 Java 类,不如使用通用树模型,例如 DOM、JDOM2 或 XOM (DOM 是三者中最古老、最受欢迎和最差的 - 我会选择 JDOM2)。

使用通用树模型,您可以将应用程序设计为对传入的大多数更改具有弹性 XML。

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

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