首页 > 解决方案 > 如何在 Java 应用程序中维护 xsd 文件(ddex 规范)的增量版本?

问题描述

设想

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

DDEX XML -> JAXB -> JAXB Auto Gen. JAVA 类 -> 映射器代码 -> 应用程序类

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


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

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

标签: javaxmlxsdjaxbddex

解决方案


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

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

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

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

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


推荐阅读