지금 가지고있는 다른 계층 구조로 xml 바인딩을 사용하여 POJO를 생성하고 싶습니다. 는 지금이 하나의 같은 XSD 있습니다Jaxb POJO generation with Inheritance
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://manueldoncel.com" xmlns:tns="http://manueldoncel.com" elementFormDefault="qualified">
<!-- Base element that any element uses/extends -->
<complexType name="baseElement" abstract="true">
<sequence>
<element name="attributes" type="anyType" minOccurs="0" />
</sequence>
<attribute name="id" type="string" />
</complexType>
<complexType name="Square">
<complexContent><extension base="tns:baseElement" /></complexContent>
</complexType>
<complexType name="Triangle">
<complexContent><extension base="tns:baseElement" /></complexContent>
</complexType>
</schema>
이 같은 xjb을;
<?xml version="1.0"?>
<jxb:bindings version="1.0" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" jxb:extensionBindingPrefixes="xjc" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<jxb:bindings schemaLocation="figures.xsd" node="/xs:schema">
<jxb:globalBindings>
<xjc:simple />
<xjc:superClass name="org.manuel.metadata.Figure"/>
</jxb:globalBindings>
</jxb:bindings>
</jxb:bindings>
하지만, 그래서, 삼각형 POJO가 ThreeSideFigure
에서보다는 Figure
에서 확장해야 XSD에서 생성
public abstract class Figure {
// some methods for all the figures
}
public abstract class ThreeSideFigure extends Figure {
.... // some methods for only the Three side Figures
}
이 방법으로 더 나은 계층 구조를 가지고 싶습니다.
이 특정 xsd에서 나는 2 개의 숫자 만 넣었지만 훨씬 더 가질 수 있습니다. xjb에서 모든 complexType이 Figure에서 확장되어야한다는 것을 지정할 수 있기를 원하지만 그 중 단지 몇 개만이 ThreeSideFigure에서 확장되어야합니다.
xjb가 어떻게 보이는지 알고 있습니까?