Spring 对 return 多个实体 类 的休息服务作为 xml 使用@RestController 的响应

Spring rest service to return multiple entity classes as xml response using @RestController

我们如何在 spring 休息服务中 return 多个实体 class 作为 XML 响应?

示例:我需要如下响应

<GetEmployeeById>
            <Response>
                <Status>0</Status>
                <Message>Data found</Message>
            </Response>
            <Data>
                <Employee>
                    <Id> 2 </Id>
                    <Name> Mani M </Name>
                    <Job> SOftware Developer </Job>
                    <Salary> 40000 </Salary>
                </Employee>
            </Data>         
        </GetEmployeeById>

在这里,Response 和 Employee 是独立的实体。我的代码收到以下 XML 响应。这里的问题是,我在响应节点内获取响应节点,在员工节点内获取员工节点。

<GetEmployeeById>
   <Response>
      <Response>
         <Status>0</Status>
         <Message>Data found</Message>
      </Response>
   </Response>
   <Employee>
      <Employee>
         <Id>2</Id>
         <Name>Mani M</Name>
         <Job>SOftware Developer</Job>
         <Salary>12000</Salary>
      </Employee>
   </Employee>
</GetEmployeeById>

以下是 java class,我在其中合并实体 classes。

@XmlRootElement (name="GetEmployeesById")
public class GetEmployeesById implements Serializable{

    
    private static final long serialVersionUID = 1L;
    
    private List<Employee> Employee = new ArrayList<Employee>();
    
    private List<Response> Response = new ArrayList<Response>();

    public List<Employee> getEmployee() {
        return Employee;
    }

    public void setEmployee(List<Employee> employee) {
        Employee = employee;
    }

    public List<Response> getResponse() {
        return Response;
    }

    public void setResponse(List<Response> Response) {
        Response = Response;
    }
    
    
}

请帮我解决这个问题。

这里的问题是 List<CustomResponse>,因为它是 List,父 </Response> 标签代表列表,子 </Response> 代表 [= 中的元素12=]

为了达到您想要的负载,Response 不能是 List,必须是 CustomResponse

至于你的数据节点,你可能想尝试创建一个新的 class 如下

@XmlRootElement(name = "Data")
public class Data implements Serializable {
   private static final long serialVersionUID = 1L;
   
   @XmlElement(name = "Employee")
   private List<Employee> employees
}

然后您可以在 GetEmployeesById class

中将 List<Employee> 替换为 Data

重命名字段并 getters

// private List<Employee> Employee = new ArrayList<Employee>();
private List<Employee> Data = new ArrayList<Employee>();

或在字段中添加注释 @XmlElement(name="Data") 或 getter(不确定)

并更改字段(也 getters)

// private List<Response> Response = new ArrayList<Response>();
private Response Response = new Response();