Jaxb+;使用xsd:choice生成xjc代码
我们已经获得了一个XSD文档,该文档将两个应用程序之间的数据传输格式指定为XML文档。映射不是我想要的那样,我想用一个自定义的Jaxb+;使用xsd:choice生成xjc代码,jaxb,code-generation,xjc,Jaxb,Code Generation,Xjc,我们已经获得了一个XSD文档,该文档将两个应用程序之间的数据传输格式指定为XML文档。映射不是我想要的那样,我想用一个自定义的.xjb映射文件对其进行自定义 xsd如下所示 <xsd:complexType name="selection"> <xsd:choice minOccurs="1" maxOccurs="unbounded"> <xsd:element name="area" type="area"/> &l
.xjb
映射文件对其进行自定义
xsd如下所示
<xsd:complexType name="selection">
<xsd:choice minOccurs="1" maxOccurs="unbounded">
<xsd:element name="area" type="area"/>
<xsd:element name="range" type="range"/>
<xsd:element name="exact" type="exact"/>
</xsd:choice>
</xsd:complexType>
<xsd:simpleType name="area">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]{2}"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="range">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]{2}-[0-9]{2}"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="exact">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]{5}"/>
</xsd:restriction>
</xsd:simpleType>
最好,我希望它能产生类似
public class Selection {
protected List<Exact> exacts;
protected List<Area> areas;
protected List<Range> ranges;
...
}
我可以在不修改原始XSD的情况下实现这一点吗
public class Selection {
protected List<Exact> exacts;
protected List<Area> areas;
protected List<Range> ranges;
...
}
public class Selection {
@XmlElementRefs({
@XmlElementRef(name = "exact", type = Exact.class),
@XmlElementRef(name = "range", type = Range.class),
@XmlElementRef(name = "area", type = Area.class)
})
protected List<SelectionType> selection;
...
}