我在XSD文件中有2种复杂类型,我可能不会更改。一个有多个子文件“filepath”出现,另一个有1个“filepath”子文件。
JAXB以不同方式生成其中任何一个,一个放在实体列表中,另一个放在单个JAXB实体中。 这对我来说是个问题,因为我希望JAXB为了继承而给我2个相等的类。 (我正在使用JAXB继承插件)
有没有办法让JAXB生成“EntitySingleFile”complextype的filepaths子属性作为列表,可能使用JAXB绑定?
这些是XSD定义:
<xs:element name="EntitySingleFile">
<xs:complexType>
<xs:sequence>
<xs:element name="filePaths" type="bgl:FilePaths" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
和
<xs:element name="EntityMultiFile">
<xs:complexType>
<xs:sequence>
<xs:element name="filePaths" type="bgl:FilePaths" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
这是我目前从这些XSD文件中获取的内容:
@XmlRootElement(name = "EntitySingleFile")
public class EntitySingleFile
implements IDrawConfiguration
{
@XmlElement(required = true, type = FilePaths.class)
protected IFilePaths filePaths;
....
对于multifile:
@XmlRootElement(name = "EntityMultiFile")
public class EntityMultiFile
implements IDrawConfiguration
{
@XmlElement(required = true, type = FilePaths.class)
protected List<IFilePaths> filePaths;
答案 0 :(得分:1)
由于您可能只需要集合方法来实现某个接口,我认为最简单的方法是使用Code Injector插件之类的东西来生成额外的getFilePaths()
方法。
请参阅以下关于使用hinst的答案:
您可能还需要jaxb:property
自定义以避免在getter中命名冲突,但我希望您能看到它是如何解决的。