Java Jaxb:如何为XSD元素指定默认类

Java Jaxb:如何为XSD元素指定默认类,java,xml,jaxb,jaxb2,maven-jaxb2-plugin,Java,Xml,Jaxb,Jaxb2,Maven Jaxb2 Plugin,当从XSD生成Java类时,我如何指定对于某些特定节点,应该使用一个特定且已经存在的Java类,而不是尝试生成一个 非常感谢。您应该使用以下绑定自定义 <bindings version="2.0" xmlns="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" xmlns:a

当从XSD生成Java类时,我如何指定对于某些特定节点,应该使用一个特定且已经存在的Java类,而不是尝试生成一个


非常感谢。

您应该使用以下绑定自定义

<bindings version="2.0" xmlns="http://java.sun.com/xml/ns/jaxb"
    xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
    xmlns:annox="http://annox.dev.java.net" xmlns:namespace="http://jaxb2-commons.dev.java.net/namespace-prefix">
    <bindings schemaLocation="../schema/yourSchema.xsd">

        <bindings node="//xs:complexType[@name='Foo']">
            <class ref="com.FooImpl"/> 
        </bindings>

    </bindings>
</bindings>

您应该使用以下绑定自定义

<bindings version="2.0" xmlns="http://java.sun.com/xml/ns/jaxb"
    xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
    xmlns:annox="http://annox.dev.java.net" xmlns:namespace="http://jaxb2-commons.dev.java.net/namespace-prefix">
    <bindings schemaLocation="../schema/yourSchema.xsd">

        <bindings node="//xs:complexType[@name='Foo']">
            <class ref="com.FooImpl"/> 
        </bindings>

    </bindings>
</bindings>

您可以使用
插曲
文件引用现有类
.eption
文件只是
jaxb
绑定文件,在元素和java类之间有映射

a)如果这些现有类也是从(另一个)xsd生成的。使用下面的选项首先创建.eption文件

xjc -episode a.episode a.xsd
然后使用包含映射的
a.eption
作为下一代
xjc
的输入

xjc b.xsd -extension -b a.episode
b)如果您想引用一些随机类,那么您可能必须编写自己的插曲文件,提供
元素
类引用
之间的映射,如下所示

样本。插曲

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" if-exists="true" version="2.1">
 <jaxb:bindings scd="x-schema::">
    <jaxb:bindings scd="employee">
      <jaxb:class ref="www1.example.Employee"/>
      <jaxb:package name="www1.example" />
    </jaxb:bindings>
   </jaxb:bindings>


并使用
xjc b.xsd-extension-b sample.eption

您可以使用
eption
文件引用现有的类
.eption
文件只是
jaxb
绑定文件,在元素和java类之间有映射

a)如果这些现有类也是从(另一个)xsd生成的。使用下面的选项首先创建.eption文件

xjc -episode a.episode a.xsd
然后使用包含映射的
a.eption
作为下一代
xjc
的输入

xjc b.xsd -extension -b a.episode
b)如果您想引用一些随机类,那么您可能必须编写自己的插曲文件,提供
元素
类引用
之间的映射,如下所示

样本。插曲

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" if-exists="true" version="2.1">
 <jaxb:bindings scd="x-schema::">
    <jaxb:bindings scd="employee">
      <jaxb:class ref="www1.example.Employee"/>
      <jaxb:package name="www1.example" />
    </jaxb:bindings>
   </jaxb:bindings>


并使用
xjc b.xsd-extension-b sample.eption

非常感谢。这是针对2+版本的,您知道是否可以针对Jaxb2 1.6版执行此操作吗?欢迎!。是的,可以使用JDK1.6(最新更新)。参考这个,非常感谢。这是针对2+版本的,您知道是否可以针对Jaxb2 1.6版执行此操作吗?欢迎!。是的,可以使用JDK1.6(最新更新)。参考此