Почему JAXB не может разобрать универсальный тип? - PullRequest
1 голос
/ 07 июля 2019

Я пытаюсь разобрать какой-нибудь xml-файл, но у меня проблема с универсальным типом.Если я устанавливаю @XMLelement (name = "ZAP"), это не работает, но если я устанавливаю @XmlAnyElement (lax = true), это работает.Я думаю, что @XMLelement более правильно использовать в этом случае, но я не знаю почему.

'' 'java

@XmlRootElement(name = "ZL_LIST")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlSeeAlso({ RegistryRecordXmlModelV2.class, 
RegistryRecordXmlModelV30.class, RegistryRecordXmlModelV31.class })
public class RegistryXmlModel <T extends RegistryRecordXmlModel> {

@XmlElement(name = "ZAP")
private List<T> records;
@XmlTransient
private Class<T> recordClazz;
@XmlTransient
private String schema;

public RegistryXmlModel() {
}

public RegistryXmlModel(Class<T> recordClazz) {
    this.recordClazz = recordClazz;
}

public RegistryXmlModel(Class<T> recordClazz, String schema) {
    this.recordClazz = recordClazz;
    this.schema = schema;
}

public List<T> getRecords() {
    return records;
}

public void setRecords(List<T> records) {
    this.records = records;
}

public Class<T> getRecordClazz() {
    return recordClazz;
}

public String getSchema() {
    return schema;
}
}

@XmlRootElement(name = "ZAP")
@XmlAccessorType(XmlAccessType.FIELD)
public class RegistryRecordXmlModelV31 extends 
RegistryRecordXmlAbstractModel<RegistryCaseXmlModelV31> {
@XmlElement(name = "Z_SL")
private RegistryCaseXmlModelV31 caseInfo;

public RegistryRecordXmlModelV31() {
    //default constructor
}

@Override
public RegistryCaseXmlModelV31 getCaseInfo() {
    return caseInfo;
}

public void setCaseInfo(RegistryCaseXmlModelV31 caseInfo) {
    this.caseInfo = caseInfo;
}
}
...