从xsd引用任何外部java类

时间:2016-05-12 19:58:15

标签: java xml xsd jaxb schema

我正在创建xsd文件并使用JAXB从这些xsd文件转换java类。在下面的示例中,ClassB是在某个jar文件中定义/声明的,我想在我的xsd中引用它,如下所示:

<complexType name="ClassA">
  <sequence>
    <element name="objB" type="ClassB" minOccurs="0" maxOccurs="unbounded"/>
  </sequence>
</complexType>

这是允许的吗?访问它的最佳方式是什么?

1 个答案:

答案 0 :(得分:0)

这应该有效:

  <xs:complexType name="ClassBType" abstract="true">
    <xs:annotation>
      <xs:appinfo>
        <jaxb:class name="ClassB" implClass="fully.qualified.package.name.ClassB"/>
      </xs:appinfo>
    </xs:annotation>
  </xs:complexType>
  <!--

  -->
  <xs:complexType name="ClassA">
    <xs:complexContent>
      <xs:extension base="ClassBType">
    .
    .
    Any optional <xs:attribute> elements
    .
    .
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

生成的Java代码将创建一个名为ClassA.java的文件,如下所示:

public class ClassA extends ClassB {
.
.
.
}