我需要创建一个描述 Java 对象的 XML 架构定义 (XSD)。
我想知道当相关对象继承自具有类型参数的公共(public)基类时如何执行此操作。
public abstract class Rule<T> { ... }
public abstract class TimeRule extends Rule<XTime> { ... }
public abstract class LocationRule extends Rule<Location> { ... }
public abstract class IntRule extends Rule<Integer> { ... }
....
(其中 XTime
和 Location
是在其他地方定义的自定义类)
我将如何构建一个 XSD,以便我可以拥有代表 Rule<T>
的每个子类的 XML 节点。 - 没有每个人的 XSD 重复其共同内容?
谢谢!
最佳答案
考虑JAXB用于 XML 架构 -> Java 编译。
XML 模式为继承建模提供了一些可能性:
<xs:complexType name="baseType">
<xs:sequence>
<xs:element name="a" type="xs:string"/>
<xs:element name="b" type="xs:long"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="extendedType">
<xs:complexContent>
<xs:extension base="baseType">
<xs:sequence>
<xs:element name="c" type="xs:dateTime"/>
<xs:element name="d" type="xs:base64Binary"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
但是,我认为您无法完全实现您发布的 Java 代码。不过,您可以稍微接近 inheritance plugin .
关于java - Java 对象的 XML 模式定义 (XSD) 中的继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2651221/