当前位置: 首页 > 知识库问答 >
问题:

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

澹台星光
2023-03-14

当我调用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;
    }
}
<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 resposne时,JAXB解封很好

JAXBContext jaxbContext = JAXBContext.newInstance(RecordingCreated.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
RecordingCreated recordingCreated = (RecordingCreated) jaxbUnmarshaller.unmarshal(inputStream);

但是当我得到第二个回应的时候,当然,我得到了一个错误,像这样

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

共有1个答案

伍捷
2023-03-14

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

 类似资料:
  • 我在将XML SOAP返回转换为相应的POJO类时遇到问题。XML返回如下所示: 我尝试使用Jackson XMLMAPER,但是在反序列化过程中,我不能把它作为根元素考虑返回节点。它将“信封”节点视为根节点。 我需要只提取返回节点并转换到我的pojo类。 另一个问题是“项目”节点应该是集合的一部分,但是没有对这些元素进行分组的父节点。 有没有人知道一个解析器可以对这种类型的xml进行反序列化?

  • null 最终产品应该如下所示: 在上面的例子中,@public instance将只有uniqueKey、gtin、printedGtin作为属性。

  • null 这是很好的,因为我可以确定我的API请求是否成功。 但是: 由于JSend格式有它自己的东西,它在响应时也有一个小的状态指示器,如下所示: 我是否应该坚持手动解析并使用而不是我的模型 对于类型paramter? 因为这样,我可以使用并将字符串转换为JSON,然后我可以手动解析模型,就像为它们编写解析器一样。

  • 使用此JSON,自动JSON到POJO严重失败。 请注意,不同请求的项目数量不同。在这里,我将包含两项JSON响应。 这个JSON对象的POJO会是什么样子?

  • 问题内容: 我在扩展活动的类中使用4list视图。我必须执行其他列表项单击功能。我可以使用以下方法代码吗?那么如何设置一个为多个? 问题答案: 为不同的列表视图设置不同的适配器。我以两个列表视图为例。因此,请为这两个安装两个适配器。并且setOnItemClick(context)将如下所示。

  • 我正在使用来自另一个web服务的XML数据进行java项目。我是杰克逊框架的新手。创建POJO文件,但在映射时会显示错误,如无法识别的字段列。我不知道如何映射我的反应 XML响应 细胞集类 排课 细胞类 帮我解决这个问题。