由于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/

10-11 05:12