由于Java中已经存在相应的类,因此我已从jaxb2生成中排除了一些xml类型。一代是完美的工作,并建立了类。
当我尝试通过this tutorial包括类型时,jsonix仅使用生成的jaxb2类在包中搜索类。因此,它看起来是generate.entity.Position而不是entity.Position类。
...
<jaxb:bindings node="//xs:complexType[@name='PositionType']">
<jaxb:class ref="entity.Position"/>
</jaxb:bindings>
<jaxb:bindings node="//xs:complexType[@name='MoveType']">
<jaxb:class ref="entity.Move"/>
</jaxb:bindings>
<jsonix:mapping package="entity">
<jsonix:includes>
<jsonix:type name="Position"/>
</jsonix:includes>
</jsonix:mapping>
...
最佳答案
Jsonix的作者在这里。
包含/排除配置与您可能认为的不一样。它仅过滤要包含在映射中的类型或元素。这使您可以仅使用所需的内容来创建较小的映射。
尽管如此,映射是按名称空间/包生成的。您不能将不同包中的类型放入一个映射。但是,您可以创建一个包含多个软件包的模块。配置就像:
<jsonix:module name="CSW_2_0_2">
<jsonix:mapping package="net.opengis.csw.v_2_0_2" name="CSW_2_0_2"/>
<jsonix:mapping package="org.hisrc.dc.elements.v_1_1" name="DC_1_1"/>
<jsonix:mapping package="org.hisrc.dc.terms" name="DCT"/>
</jsonix:module>
接下来,您正在使用
jaxb:class/@ref
。这对Jsonix不利,因为您会说“我不在乎XML Schema模型,只需使用此Java类”。因此,架构编译器(我的意思是基础JAXB架构编译器XJC)不会生成适当的模型。简而言之,Jsonix Schema Compiler不会将您的Java类编译为XML JS映射。它仅对XML模式有效。关于java - 如何在jsonix中包含生成的包之外的类型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41592900/