Java 对不同的xml响应使用一个POJO类

Java 对不同的xml响应使用一个POJO类,java,xml,serialization,jaxb,Java,Xml,Serialization,Jaxb,当我调用rest服务时,我会得到不同的xml响应,使用不同的xml根元素。我想知道,是否有机会将这些XML解组到一个pojo类中 例如,我创建了一个类RecordingCreated @XmlRootElement(name = "recordingCreated") public class RecordingCreated { private String nodeID; private String cameraID; private String recPath

当我调用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.UnmarshaleException:意外元素(uri:“”), 本地:“错误”)。预期要素为]]


问题:是否有机会让一个类用不同的根元素解组两个不同的xml响应?

尝试为两个不同的响应创建两个不同的子类,并使用相应的根元素。
您可以将当前类作为它们的父类发布,并且根据您将得到的响应,调用所需的类。

尝试为两个不同的响应创建两个不同的子类,并使用相应的根。
您可以将当前类作为这两个类的父类发布,并根据您将得到的响应,调用所需的类。

为什么要这样做?1。我不想为不同的回答创建类似的类。2.我不知道我得到了什么回应。所以,如果我得到第二个响应并试图解组,我就有一个错误。你为什么要这样做?1。我不想为不同的回答创建类似的类。2.我不知道我得到了什么回应。所以,如果我得到第二个响应,我试图解组,我得到了一个错误。你能给出一个代码示例吗,我认为你是不对的。我是在建议这样的东西。你能给出代码示例吗,我认为你是不对的。我是在建议这样的东西