Referencing any external java class from xsd



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

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

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

这应该有效:

  <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 {
.
.
.
}

最新更新