Java xjc仅用于架构的一部分

Java xjc仅用于架构的一部分,java,xml,data-binding,jaxb,Java,Xml,Data Binding,Jaxb,我们计划使用JAXB将xml映射到对象。我们的要求是,我们将只处理文档的一部分(稍微大一点),所以我们只希望将该部分(片段)转换为对象。因此,我们不希望为xsd中的所有元素创建类 我们如何要求XJC在生成类时忽略某些元素或考虑特定元素? 从我所读到的内容来看,我们可以使用绑定文件来定制xjc的行为,但是我们可以在模式中设置什么来忽略元素。您可以使用外部绑定文件来配置xjc以使用现有类,而不是生成一个类。您可以通过指向不存在的类来利用这一点,以使JAXB排除XML模式的部分内容。在下面的示例中,不

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

我们如何要求XJC在生成类时忽略某些元素或考虑特定元素?


从我所读到的内容来看,我们可以使用绑定文件来定制xjc的行为,但是我们可以在模式中设置什么来忽略元素。

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

binding.xml

<jxb:bindings schemaLocation="yourSchema.xsd">
    <jxb:bindings node="//xs:complexType[@name='Foo']">
        <jxb:class ref="com.example.Fake"/>
    </jxb:bindings>
</jxb:bindings>
xjc  -d outputDir -b binding.xml yourSchema.xsd

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

binding.xml

<jxb:bindings schemaLocation="yourSchema.xsd">
    <jxb:bindings node="//xs:complexType[@name='Foo']">
        <jxb:class ref="com.example.Fake"/>
    </jxb:bindings>
</jxb:bindings>
xjc  -d outputDir -b binding.xml yourSchema.xsd

您是使用xsd还是java注释来生成类?我们使用xsd,但是这个xsd用于整个文档,而不仅仅是需要的部分。此外,我不确定如何使用java注释生成类?你能给我指一些链接吗?你找到解决问题的方法了吗?我也有同样的问题。更糟糕的是:XSD中未使用的部分会导致XJC抛出错误,因为在Windows上,两个名称相似的类型归结为相同的文件名。您是否使用XSD或java注释生成类?我们使用XSD,但此XSD用于整个文档,而不仅仅是所需的部分。此外,我不确定如何使用java注释生成类?你能给我指一些链接吗?你找到解决问题的方法了吗?我也有同样的问题。更糟糕的是:XSD中未使用的部分会导致XJC抛出错误,因为在Windows上,两个名称相似的类型归结为相同的文件名。谢谢您的建议。唯一的问题是我的模式非常大,因此必须为许多元素编写绑定……我想这相当于为所需的部分编写POJO并在其上添加注释。有更简单的方法吗?我想我听起来太懒了:谢谢你的建议。唯一的问题是我的模式非常大,因此必须为许多元素编写绑定……我想这相当于为所需的部分编写POJO并在其上添加注释。有更简单的方法吗?我想我听起来太懒了