Java springrest服务使用@RestController将多个实体类作为xml响应返回
如何在SpringREST服务中以XML响应的形式返回多个实体类 示例:我需要如下响应Java springrest服务使用@RestController将多个实体类作为xml响应返回,java,xml,hibernate,spring-mvc,spring-data-jpa,Java,Xml,Hibernate,Spring Mvc,Spring Data Jpa,如何在SpringREST服务中以XML响应的形式返回多个实体类 示例:我需要如下响应 <GetEmployeeById> <Response> <Status>0</Status> <Message>Data found</Message> </Response> <Da
<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>
0
发现的数据
2.
玛尼M
软件开发人员
40000
这里,Response和Employee是独立的实体。我的代码得到以下XML响应。这里的问题是,我在response节点中获取response节点,在employee节点中获取employee节点
<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>
0
发现的数据
2.
玛尼M
软件开发人员
12000
下面是一个java类,我在其中组合了两个实体类
@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;
}
}
@XmlRootElement(name=“GetEmployeesById”)
公共类GetEmployeesById实现可序列化{
私有静态最终长serialVersionUID=1L;
private List Employee=new ArrayList();
私有列表响应=新建ArrayList();
公共列表getEmployee(){
返回员工;
}
公共员工(列出员工){
雇员=雇员;
}
公共列表getResponse(){
返回响应;
}
公共无效设置响应(列表响应){
响应=响应;
}
}
请帮我解决这个问题。您的问题在于
列表
,因为它是列表
,父
标记表示列表,子
表示列表中的元素
为了实现所需的有效负载,响应
不能是列表
,必须是自定义响应
对于您的数据节点,您可能希望尝试创建一个新类,如下所示
@XmlRootElement(name = "Data")
public class Data implements Serializable {
private static final long serialVersionUID = 1L;
@XmlElement(name = "Employee")
private List<Employee> employees
}
@XmlRootElement(name=“Data”)
公共类数据实现可序列化{
私有静态最终长serialVersionUID=1L;
@xmlement(name=“Employee”)
私人名单雇员
}
然后,您可以在
GetEmployeesById
类中用数据
替换列表
,重命名字段和getter
//私有列表Employee=new ArrayList();
私有列表数据=新的ArrayList();
或者将注释@xmlement(name=“Data”)
添加到字段或getter(不确定)
和更改字段(也是getter)
//private List Response=new ArrayList();
私有响应=新响应();
根据您的建议进行了修改,现在数据节点将同时作为父节点和子节点出现。2 Kumar M Junior Software Developer 120000这里找到的数据是一些提示,我会尝试@XmlVariableNode(“name”)
,但目前无法验证。谢谢您的帮助