我从jaxb2生成中排除了一些xml类型,因为Java中已经存在相应的类。一代人完美地工作,并且成立了课程。
当我尝试按this tutorial包含类型时,jsonix仅在包中生成jaxb2类来搜索类。所以它看起来是 generated.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>
...
答案 0 :(得分:0)
此处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&lt; - &gt; JS映射。它只对XML Schema执行此操作。