xjc仅用于模式的一部分

OKO*_*KOK 6 java xml data-binding jaxb

我们计划使用JAXB将xml映射到对象.我们的要求是我们只处理文档的一部分(稍微大一些),所以我们只想将该部分(片段)转换为对象.因此,我们不想为xsd中的所有元素创建类.

我们怎样才能让xjc在生成类时忽略某些元素或考虑特定元素?

根据我的阅读,我们可以使用绑定文件来自定义xjc的行为,但是我们可以在模式中放置什么来忽略元素.

bdo*_*han 2

您可以使用外部绑定文件将 XJC 配置为使用现有类而不是生成类。您可以通过指向不存在的类来利用这一点,让 JAXB 排除部分 XML 模式。在下面的示例中,不存在的类com.example.Fake将用于名为 Foo 的复杂类型。

绑定.xml

<jxb:bindings schemaLocation="yourSchema.xsd">
    <jxb:bindings node="//xs:complexType[@name='Foo']">
        <jxb:class ref="com.example.Fake"/>
    </jxb:bindings>
</jxb:bindings>
Run Code Online (Sandbox Code Playgroud)

XJC 呼叫

xjc  -d outputDir -b binding.xml yourSchema.xsd
Run Code Online (Sandbox Code Playgroud)