我目前正致力于让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但是完全相互不相容。在这种情况下,我觉得延伸不是一个选择。
答案 0 :(得分:0)
在执行OGC Schemas and Tools Project时,我经常遇到这种情况。这个项目有很多模式相互使用。
以下是一些提示:
com.acme.foo:com.acme.bar
您可能想查看我提到的OGC project。该项目有大量相互关联的模式,具有不同的共存版本。