Для того, чтобы JAXB мог проанализировать этот класс в этот момент, XML из <BlacklistCodeSet>
должно быть:
<BlacklistCodeSet>
<blackListCode>D</blackListCode>
<entityId>58241962</entityId>
</BlacklistCodeSet>
Вы можете убедиться в этом сами, если создадите экземпляр BlackListCode
и используйте JAXB для маршалла до XML. Это лучший способ «отладки» JAXB.
BlackListCode blackListCode = new BlackListCode();
blackListCode.setEntityId("58241962");
blackListCode.setBlackListCode("D");
JAXBContext jaxbContext = JAXBContext.newInstance(BlackListCode.class);
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(blackListCode, System.out);
Как видите, XML, необходимый JAXB, сильно отличается от фактического XML, которое вы даете JAXB. Элементы даже не имеют правильного имени, начиная с строчных букв, поэтому вам нужно указать @XmlElement
аннотации, чтобы правильно их назвать, и вам нужны дополнительные объекты, чтобы получить более сложные XML.
@XmlRootElement(name = "BlacklistCodeSet")
class BlackListCode {
private ClEntityIdInfoExt clEntityIdInfoExt;
private GeneralCollectionEntityInfoExt generalCollectionEntityInfoExt;
@XmlElement(name = "ClEntityIdInfoExt")
public ClEntityIdInfoExt getClEntityIdInfoExt() {
return this.clEntityIdInfoExt;
}
public void setClEntityIdInfoExt(ClEntityIdInfoExt clEntityIdInfoExt) {
this.clEntityIdInfoExt = clEntityIdInfoExt;
}
@XmlElement(name = "GeneralCollectionEntityInfoExt")
public GeneralCollectionEntityInfoExt getGeneralCollectionEntityInfoExt() {
return this.generalCollectionEntityInfoExt;
}
public void setGeneralCollectionEntityInfoExt(GeneralCollectionEntityInfoExt generalCollectionEntityInfoExt) {
this.generalCollectionEntityInfoExt = generalCollectionEntityInfoExt;
}
@Override
public String toString() {
return "BlackListCode{entityId='" + this.clEntityIdInfoExt.getEntityId() + '\'' +
", BlacklistCode='" + this.generalCollectionEntityInfoExt.getBlacklistCode() + '\'' + '}';
}
}
class ClEntityIdInfoExt {
private String entityId;
public ClEntityIdInfoExt() {
}
public ClEntityIdInfoExt(String entityId) {
this.entityId = entityId;
}
@XmlElement(name = "EntityId")
public String getEntityId() {
return this.entityId;
}
public void setEntityId(String entityId) {
this.entityId = entityId;
}
}
class GeneralCollectionEntityInfoExt {
private String BlacklistCode;
public GeneralCollectionEntityInfoExt() {
}
public GeneralCollectionEntityInfoExt(String blacklistCode) {
this.BlacklistCode = blacklistCode;
}
@XmlElement(name = "BlacklistCode")
public String getBlacklistCode() {
return this.BlacklistCode;
}
public void setBlacklistCode(String blacklistCode) {
this.BlacklistCode = blacklistCode;
}
}
Тест
BlackListCode blackListCode = new BlackListCode();
blackListCode.setClEntityIdInfoExt(new ClEntityIdInfoExt("58241962"));
blackListCode.setGeneralCollectionEntityInfoExt(new GeneralCollectionEntityInfoExt("D"));
JAXBContext jaxbContext = JAXBContext.newInstance(BlackListCode.class);
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(blackListCode, System.out);
Выход
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<BlacklistCodeSet>
<ClEntityIdInfoExt>
<EntityId>58241962</EntityId>
</ClEntityIdInfoExt>
<GeneralCollectionEntityInfoExt>
<BlacklistCode>D</BlacklistCode>
</GeneralCollectionEntityInfoExt>
</BlacklistCodeSet>
Теперь, когда сгенерированный XML соответствует ожидается, XML, JAXB может правильно демаршаллировать XML в объект.