【发布时间】:2016-05-16 13:37:29
【问题描述】:
当我调用 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: 意外元素 (uri:"", 本地:“错误”)。预期元素是 ]]
问题:有没有机会让一个类解组具有不同根元素的两个不同的 xml 响应?
【问题讨论】:
-
你为什么要这么做?
-
1.我不想为不同的响应创建类似的类。 2. 我不知道我得到什么回应。因此,如果我得到第二个响应并尝试解组,则会出现错误。
标签: java xml serialization jaxb