java – jaxb覆盖特定生成的类集的包

我有一个大的第三方xsd文件,通过导入拉入一大堆其他xsd文件.整个事情产生超过1000个类.当我告诉xjc(jaxb)处理器生成特定包中的所有内容时,我会遇到各种命名冲突.如果我没有指定包,那么处理器使用xsd文件中的目标属性创建
java包,并且整个生成没有任何错误.

问题是包结构很糟糕,因为目标名称的选择非常糟糕.其他开发者讨厌它.他们只需要一些课程.

所以我一直在尝试做的是给处理器一个bindings.xml文件,我想在那里指定要在给定包名中生成的某些类.
我在Oracle网站,论坛,样本的文档之间来回走动.我不能引用我的绑定文件的每一次迭代.我目前的化身是这样的:

<jaxb:bindings 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
    version="2.1"
    schemaLocation="heavy.xsd"
    node="//xsd:element[@name='Error']"
>

    <jaxb:bindings node="//xsd:element[@name='Error']">
        <jaxb:package name="ABC"/>
    </jaxb:bindings>

    <jaxb:globalBindings
        underscoreBinding="asCharInWord"
        localScoping="toplevel"
        typesafeEnumMaxMembers="10000"
        generateElementClass="true"
    >
    </jaxb:globalBindings>


<!--
        <jaxb:package name="ABC"/>
-->

<!--
    <jaxb:schemaBindings>
        <jaxb:package name="ABC"/>
    </jaxb:schemaBindings>
-->

<!--
    <jaxb:schemaBindings>
        <jaxb:package name="ABC"/>
        <jaxb:nameXmlTransform>
            <jaxb:elementName prefix="Error"/>
        </jaxb:nameXmlTransform>
    </jaxb:schemaBindings>
-->

</jaxb:bindings>

无论我尝试什么,我还没有看到它在ABC包中生成任何类.在这种情况下,我希望在ABC中生成错误.任何帮助将不胜感激.

最佳答案 不幸的是,你不可能做你想做的事.我想要同样的事情,我在同一条船上.但直接来自Oracles口:

http://docs.oracle.com/cd/E19316-01/819-3669/bnbbt/index.html

相关信息:

name – is the name of the derived Java interface. It must be a legal Java interface name and must not contain a package prefix. The package prefix is inherited from the current value of package.

因此,元素根本没有办法指定每个xsd继承的不同包.

点赞