java - 如何在 Java 应用程序中维护 xsd 文件(ddex 规范)的增量版本?
问题描述
设想
我们有一个 java 应用程序,它承载了解析各种版本的ddex规范的逻辑。对于每个新的 ddex 版本,我们目前维护一个相应的映射器来将 xml 映射到我们的应用程序类。这个过程是这样的:
DDEX XML -> JAXB -> JAXB Auto Gen. JAVA 类 -> 映射器代码 -> 应用程序类
从长远来看,这种设计是不可维护的。对于每个包含许多字段的 ddex 版本,它会导致大量代码重复和重复测试工作,因为它来自以前的版本。
我想知道如何更好地设计这样的系统。如果需要,我们也愿意切换到其他 xml 解析器。
注意:我看到了这个答案,但也想知道任何特定于 ddex 的想法。加上答案已经超过 10 年了,所以想检查一下现在是否还有其他可用的东西。
解决方案
在我看来,当您必须处理频繁的模式更改时,JAXB(以及一般的数据映射技术)是错误的选择。我已经看到项目在这方面严重脱节。
与其将特定的模式结构映射到特定的 Java 类,不如使用通用树模型,例如 DOM、JDOM2 或 XOM(DOM 是最古老、最流行和最差的三个模型——我会选择 JDOM2)。
使用通用树模型,您可以将应用程序设计为对传入 XML 中的大多数更改具有弹性。
或者,使用面向 XML 的编程语言,例如 XSLT 或 XQuery。
我不熟悉 ddex 所以这个答案并不特定于那个环境。
推荐阅读
- python - 如何使用 Python 的 PID 查看 python 正在读取或编辑哪些文件?
- javascript - Jest & Testing Library 语法错误 Unexpected Identifier async Babel 问题
- python - 如何在 SSIS 执行流程任务中使用“if __name__ == '__main__':”?
- kubernetes - 如何向本地计算机公开入口?(Windows 上的 minikube)
- kotlin - 前台服务 kotlin 使用 Location 和 usedLocationProviderClient
- knockout.js - Knockout/Select2 Dropdownlist 包含正确的选项,但现在不显示任何选定内容
- python - 计算直方图中每个 bin 的百分比
- python - 关于内存使用和 for 循环的简单 Python 问题
- makefile - makefile - 如何读取三元素列表?
- c# - 在发布模式下关闭调试器