gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 11:53:19 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com