我有以下XSD
来自供应商的片段,我无法更改它的指定方式:
<xsd:element name="navmap">
<xsd:complexType>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="navitem"/>
<xsd:element ref="debug"/>
</xsd:choice>
<xsd:attribute name="focus" type="xsd:string" use="optional"/>
</xsd:complexType>
</xsd:element>
现在没有自定义它会生成以下代码
@XmlElements({
@XmlElement(name = "navitem", type = Navitem.class),
@XmlElement(name = "debug", type = Debug.class)
})
protected List<Object> navitemOrDebug;
我宁愿它为每种类型生成一个单独的列表,如下所示
@XmlElements({
@XmlElement(name = "navitem", type = Navitem.class)
})
protected List<Navitem> navitems;
@XmlElements({
@XmlElement(name = "debug", type = Debug.class)
})
protected List<Debug> debugs;
我的.xjb
文件中有以下内容可以重命名整个文件,List
但我不知道如何拆分它们。
<jxb:bindings node="//xsd:element[@name='navmap']//xsd:complexType//xsd:choice">
<jxb:property name="contents" />
</jxb:bindings>
如何指定我想要一个单独的List
或Set
为外部.xjb
绑定文件中的每个类型?
如果我不能这样做,如何向文件中添加一个<jaxb:annotation/>
以.xsd
指定单独的List
或Set
为每种类型指定?
我不在乎订购,在这种特殊情况下顺序并不重要。
注意: 我更喜欢外部.xjb
解决方案,我不想将自定义 .xsd 与供应商提供的每个新版本进行比较,它们太多了。