【问题标题】:Referencing any external java class from xsd从 xsd 引用任何外部 java 类
【发布时间】:2016-09-08 20:15:47
【问题描述】:
我正在创建 xsd 文件并使用 JAXB 从这些 xsd 文件转换 java 类。在下面的示例中,ClassB 在某个 jar 文件中定义/声明,我想在我的 xsd 中像这样引用它:
<complexType name="ClassA">
<sequence>
<element name="objB" type="ClassB" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
这是允许的吗?访问它的最佳方式是什么?
【问题讨论】:
标签:
java
xml
xsd
jaxb
schema
【解决方案1】:
这应该可行:
<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 {
.
.
.
}