情境
我们有一个Java应用程序,该应用程序承载用于解析ddex规范的各种版本的逻辑。对于每个新的ddex版本,我们目前都维护一个各自的映射器,以将xml映射到我们的Application类。该过程如下所示:
DDEX XML-> JAXB-> JAXB Auto Gen.JAVA类->映射器代码->应用程序类
这种设计不能长期维护。对于每个ddex版本,它都导致大量代码重复和重复测试工作,其中包含与以前版本相同的许多字段。
我想知道如何更好地设计这样的系统。如果需要,我们也愿意切换到其他xml解析器。
注意:我看到了这个answer,但也想知道任何有关ddex的想法。再加上答案已经超过10年了,因此想检查一下是否还有其他可用的东西。
最佳答案
我认为,当您必须应对频繁的模式更改时,JAXB(通常是数据映射技术)是错误的选择。我已经看到项目在此方面严重滞后。
而不是将特定的架构结构映射到特定的Java类,您应该使用诸如DOM,JDOM2或XOM之类的通用树模型(DOM是这三种中最早的,最受欢迎的和最差的-我会使用JDOM2)。
使用通用树模型,您可以设计应用程序以适应传入XML中的大多数更改。
或者,使用面向XML的编程语言,例如XSLT或XQuery。
我对ddex不熟悉,因此此答案并非特定于该环境。