如何在JAXB绑定中跳过complexType

时间:2014-01-03 15:55:55

标签: java xml jaxb xsd complextype

我使用JAXB绑定从现有的xml架构生成java类。但我想跳过以“Old”结尾的类型生成类生成,或者声明“过时”属性或包含非核心的类型。

我徒劳地尝试修改我的JAXB绑定文件,但我不知道用什么节点写来声明这些类型被跳过...

<!-- skip old types -->
<!-- with ie:obsolete attribute -->
<jaxb:bindings schemaLocation="external/insee/*.xsd">
<jaxb:bindings node="//*[@ie:obsolete='true']">
    <!-- declare this type skipped -->
</jaxb:bindings>
</jaxb:bindings>
<!-- that endswith Old -->
<!-- that contains "_" underscore -->

有解决方案吗?

1 个答案:

答案 0 :(得分:0)

假设您处理的类型都没有引用这些“跳过的类型”,那么您可以使用外部绑定文件来指定它们对应于现有的类,以便不会生成新的类。如果引用了这些跳过的类型,则会将对此假类的引用带入您的模型中。

<强> binding.xml

<jxb:bindings 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
    version="2.1">

    <jxb:bindings schemaLocation="beta.xsd">
        <jxb:bindings node="//xs:element[@name='person']/complexType">
            <jxb:class ref="com.FakeClass"/>
        </jxb:bindings>
    </jxb:bindings>
</jxb:bindings>

完整示例