具有元素引用的 JAXB 多个模式
我有两个使用 JAXB 处理的模式。对第一个架构进行预处理,并使用剧集文件(遵循 http://www.java.net/blog/2006/09/05/separate-compilation-jaxb-ri-21)来使用此信息。第二个架构导入第一个架构,并再次使用 jaxb 进行处理。这一切都按预期工作。
但现在我在第一个架构中有一个元素,在第二个架构中使用引用。
架构 a:
<schema elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:test="http://www.example.org/Test/"
targetNamespace="http://www.example.org/Test/">
<element name="type" type="test:MyType"></element>
架构 b:
<schema elementFormDefault="qualified"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:second="http://www.example.org/Second/"
xmlns:test="http://www.example.org/Test/"
targetNamespace="http://www.example.org/Second/">
<import namespace="http://www.example.org/Test/" />
<complexType name="SomeType">
<sequence>
<element ref="test:type" minOccurs="1" maxOccurs="unbounded" />
</sequence>
</complexType>
在处理过程中,没有任何错误,但为两个架构生成的代码提供了相同的方法:
public JAXBElement<EventType> createType(TypeType value)
在运行时,这会导致以下错误:
com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of
IllegalAnnotationExceptions
The element name {http://www.example.org/Type/}type has more than one mapping.
如何防止 JAXB 创建重复的 createType 方法?
提前致谢!
更新:我在JAXB邮件列表上问了同样的问题,在那个列表中,我还发布了一个工作示例。主题和示例可在以下位置找到:http://java.net/projects/jaxb/lists/users/archive/2011-03/message/18
在此列表中,我已被建议解决方法,现在我可以按照自己喜欢的方式使用架构。但我仍然认为JAXB不应该创建额外的“create”方法,因为它应该已经在剧集文件中。