从 Java ResponseBean 获取意外的 XML 响应

问题描述 投票:0回答:1

这是我得到的回复:

<ResponseBean>
    <var>
        <var>
            <name>isOp</name>
            <value>0</value>
        </var>
        <var>
            <name>callStartTime</name>
            <value>17-09-2024 18:41:29</value>
        </var>
    </var>
</ResponseBean>

但我需要得到这个回复:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<response>
<var value="1" name="isOp"/>
<var value="25-07-2024 18:48:44" name="callStartTime"/>
</response>

这是我的响应 bean 类:

package com.portal.dto;

import java.util.ArrayList;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "response")
public class ResponseBean {

    private ArrayList<VarBean> var = new ArrayList<>();  // Initialize to avoid null issues
    
    public ResponseBean() {
    }
    
    public ResponseBean(ArrayList<VarBean> var) {
        this.var = var;
    }
    
    @XmlElement(name = "var")  // Annotate getter to ensure the proper XML output
    public ArrayList<VarBean> getVar() {
        return this.var;
    }
    
    public void setVar(ArrayList<VarBean> var) {
        this.var = var;
    }
    
    @Override
    public String toString() {
        return "ResponseBean [var=" + var + "]";
    }
}

这是我的 var bean 类:

package com.portal.dto;

import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name = "var")

public class VarBean {

    private String name;
    private String value;
    
    public VarBean() { 
    }
    
    public VarBean(String name, String value) {
        this.name = name;
        this.value = value;
    }
    
    public VarBean(String name, int value) {
        this.name = name;
        this.value = String.valueOf(value);  
    }
    
    @XmlAttribute
    public String getName() {
        return this.name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    @XmlAttribute
    public String getValue() {
        return this.value;
    }
    
    public void setValue(String value) {
        this.value = value;
    }
    
    @Override
    public String toString() {
        return "VarBean [name=" + name + ", value=" + value + "]";
    }

}
java xml
1个回答
0
投票

您发布的响应是单个对象响应,而不是列表响应。 我建议你将它从 List 更改为单个对象。这将删除响应中出现的额外 var 标记。

© www.soinside.com 2019 - 2024. All rights reserved.