我目前正在努力让 Maven JAXB 插件为一组非常复杂的 Xml 模式生成模型。我从一个 Maven 模块中的所有模式开始。生成的模块能够解析该语言的任何文档。不幸的是,由于我需要在另一个模块中导入该模式和模型,我不得不将这个模块分成几个模块。在多模式模块的情况下,剧集文件似乎存在问题。
例如,现在我有一个模式定义了 xml 格式的一般结构并定义了基本类型(我们称之为 A)。现在还有其他几个模式,每个模式都实现了这些基本类型的子类型(我们称其中之一为 B)。
我创建了模块,所以 B 扩展了 A。不幸的是,现在我似乎无法再解析文档了。我可以看到,在模块 B 中,已为 A 创建了一个 ObjctFactory,其中仅包含 B 从 A 扩展的所有类型的定义。所有其他类型都不再存在。
只要此 ObjectFactory 存在,我就无法解析任何内容,因为缺少根元素的定义。如果我删除它,则 B 中定义的所有元素都会从生成的对象树中丢失。
将模块中的原始 ObjectFactory 与所有模式进行比较后,我可以看到在第一个版本中,有大量的“替代方案”告诉解析器可能会出现哪些元素。在拆分版本中,这些都丢失了,所以我想如果我删除 B 中的部分 ObjectFactory,则使用 A 中的那个,而这个不知道 B 中的元素。
那么如何让 JAXB 解析 A 和 B 中的所有元素。有什么方法可以扩展 ObjectFactories 吗?如果是,这是如何完成的?
我想接下来可能会引起麻烦的事情可能是我有几个扩展 A 的模式,所以我有包含 A、B、C、D 和 E 的文档,其中 B、C、D 和 E 都扩展了 A,但与每个模式完全无关其他。我想在这种情况下扩展不会是一种选择。