java - 如何在 jsonix 中包含生成包之外的类型?

标签 java xml maven-jaxb2-plugin jsonix

我已经从 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>
...

最佳答案

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/

相关文章:

java - 在与线程的套接字通信中出现 java.net.SocketException 连接重置错误

java - 使用JAVA复制一个表数据并将其插入到同一数据库中的另一个表中?

java - 我的求和代码中的无限循环

android - 如何在Horizo​​ntalScrollView中将FrameLayout设置到最右侧

java - 从 XSD 生成 pojo 时删除 @XmlElement 注释

java - JTextField 上的监听器以检测数据输入是否完成

java - 类型不匹配 : cannot convert from ViewGroup. LayoutParams 到 LinearLayout.LayoutParams

xml - 如何在 Groovy 中通过标签名称查找所有 XML 元素?

java - 如何使用带有名称冲突的 maven-jaxb2-plugin 映射 wsdl

maven-jaxb2-plugin (maven) 生成的日期和时间