1

我已经从 jaxb2 生成中排除了一些 xml 类型,因为 Java 中已经存在相应的类。一代人完美地工作,班级建立了。

当我尝试通过本教程包含类型时,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>
...
4

1 回答 1

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<->JS 映射。它只对 XML Schemas 执行此操作。

于 2017-01-12T07:33:28.763 回答