java为不同的xml响应使用一个POJO类
当我调用rest服务时,我会得到不同的xml响应,使用不同的xml根元素。我想知道,是否有机会将这些XML解组到一个pojo类中
例如,我创建了一个类RecordingCreated
@XmlRootElement(name = "recordingCreated")
public class RecordingCreated {
private String nodeID;
private String cameraID;
private String recPath;
private String recordingStatus;
public String getNodeID() {
return nodeID;
}
@XmlElement
public void setNodeID(String nodeID) {
this.nodeID = nodeID;
}
public String getCameraID() {
return cameraID;
}
@XmlElement
public void setCameraID(String cameraID) {
this.cameraID = cameraID;
}
public String getRecPath() {
return recPath;
}
@XmlElement
public void setRecPath(String recPath) {
this.recPath = recPath;
}
public String getRecordingStatus() {
return recordingStatus;
}
@XmlElement
public void setRecordingStatus(String recordingStatus) {
this.recordingStatus = recordingStatus;
}
}
调用rest服务后,我可以得到以下形式的xml响应
<recordingCreated>
<nodeID>"111</nodeID>
<cameraID>222</cameraID>\
<recordingID>333</recordingID>\
<recPath>rec</recPath>
<recordingStatus>recorded</recordingStatus>
</recordingCreated>
以
<error>
<code>444</code>
<description>broker: access denied</description>
</error>
当我得到第一个xml响应时,JAXB解组很好
JAXBContext jaxbContext = JAXBContext.newInstance(RecordingCreated.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
RecordingCreated recordingCreated = (RecordingCreated) jaxbUnmarshaller.unmarshal(inputStream);
但当我得到第二个回应时,我当然会出错,就像这样
javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"error"). Expected elements are <{}recordingCreated>]]
问题:是否有机会让一个类用不同的根元素解组两个不同的xml响应
# 1 楼答案
尝试为两个不同的响应创建两个不同的子类,并使用相应的根。 您可以将当前类作为这两个类的父类发布,并且根据您将得到的响应,调用所需的类