Java 如何在XML中传递@RequestBody对象列表

Java 如何在XML中传递@RequestBody对象列表,java,xml,spring,spring-boot,jaxb,Java,Xml,Spring,Spring Boot,Jaxb,我有一个带有PostMapping的rest应用程序: public List<Job> jobs = new ArrayList<Job>() @PostMapping public JobList handleXMLPostRequest (@Valid @RequestBody JobList newJobs) { for(Job joba : newJobs.getJobList()) jobs.add(joba);

我有一个带有PostMapping的rest应用程序:

public List<Job> jobs = new ArrayList<Job>()
@PostMapping
public JobList handleXMLPostRequest (@Valid @RequestBody JobList newJobs)
    {
        for(Job joba : newJobs.getJobList())
        jobs.add(joba);

        for (Job joba : jobs)
            System.out.println(joba.toString());

    System.out.println("\n");
    return newJobs;
    }
对象作业列表:

@XmlRootElement(name = "jobs")
@XmlAccessorType(XmlAccessType.PROPERTY)
public class JobList {
    public ArrayList<Job> jobList = new ArrayList<>();
    //getter setter
}
@XmlRootElement(name=“jobs”)
@XmlAccessorType(XmlAccessType.PROPERTY)
公共类工作清单{
public ArrayList jobList=new ArrayList();
//吸气剂设定器
}
正在尝试发布下一个XML:

<jobs>
    <job>
        <id>10</id>
        <type>print</type>
        <user>user1</user>
        <device>device1</device>
        <amount>10</amount>
    </job>
    <job>
        <id>11</id>
        <type>scan</type>
        <user>user1</user>
        <device>device1</device>
        <amount>10</amount>
    </job>
</jobs>

10
打印
用户1
设备1
10
11
扫描
用户1
设备1
10
我需要把读作JobList,其中每个都是这个列表中的job对象

当我运行我的示例并将这个xml列表传递给它时,它返回空列表。 如何正确设置此工作列表?

试试这个

JobsList.java

@XmlRootElement(name = "jobs")
@XmlAccessorType(XmlAccessType.PROPERTY)
public class JobList {

    private ArrayList<Job> jobList;

    @XmlElement(name="job")
    public ArrayList<job> getJobList(){
        return jobList;
    }

    public void setJobList(ArrayList<Job> jobList){
        this.jobList = jobList;
    }
}

Add@PostMapping(consumes={MediaType.APPLICATION\u XML\u VALUE})仍然返回空列表。另外,当我尝试只传递一个结构时,在参数中是job job,而不是JobList newJobs,它被很好地序列化到job object。这都是关于JobList中的错误注释,我没有使用@xmlement(name=“job”)谢谢
@XmlRootElement(name = "jobs")
@XmlAccessorType(XmlAccessType.PROPERTY)
public class JobList {

    private ArrayList<Job> jobList;

    @XmlElement(name="job")
    public ArrayList<job> getJobList(){
        return jobList;
    }

    public void setJobList(ArrayList<Job> jobList){
        this.jobList = jobList;
    }
}
@XmlRootElement
@XmlAccessorType(XmlAccessType.PROPERTY)
public class Job {

    private int id;
    private String type;
    private String user;
    private String device;
    private int amount;

    @XmlElement
    public int getId(){
        return id;
    }

    public void setId(int id){
        this.id = id;
    }

    @XmlElement
    public String getType(){
        return type;
    }

    public void setType(String type){
        this.type = type;
    }

    @XmlElement
    public String getUser(){
        return user;
    }

    public void setUser(String iser){
        this.user = user;
    }

    @XmlElement
    public String getDevice(){
        return device;
    }

    public void setDevice(String device){
        this.device = device;
    }

    @XmlElement
    public int getAmount(){
        return amount;
    }

    public void setAmount(int amount){
        this.amount = amount;
    }

}