【问题标题】:spring boot XML is populating extra tagsspring boot XML 正在填充额外的标签
【发布时间】:2020-08-08 11:36:04
【问题描述】:

我是 springboot 的新手,并且正在学习一些教程,例如 java brains。我正在尝试为员工创建 XML,但我的 Spring Boot 应用程序正在返回附加标签。 我在 pom.xml 中添加了 Jackson-dataformat-xml。 请帮忙。提前致谢。

期待:

<Employees>
<Employee>
<id>1</id>
<name>Topic1</name>
<department>Description1</department>
</Employee>
</Employees>

实际结果:

<Employees>
<employees>
<employees>
<id>1</id>
<name>Topic1</name>
<department>Description1</department>
</employees>
</employees>
</Employees>

员工类

public class Employees {

    List<Employee> employees = new ArrayList<Employee>();

    public List<Employee> getEmployees() {
        return employees;
    }

    public void setEmployees(List<Employee> employees) {
        this.employees = employees;
    }

    public Employees(List<Employee> employees) {
        super();
        this.employees = employees;
    }


}

员工类:

public class Employee {

    private int id;
    private String name;
    private String department;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getDepartment() {
        return department;
    }
    public void setDepartment(String department) {
        this.department = department;
    }
    public Employee(int id, String name, String department) {
        super();
        this.id = id;
        this.name = name;
        this.department = department;
    }

}

控制器:

@RestController
public class EmployeeController {

    @RequestMapping(value = "/employees", produces = "application/xml")
    public Employees getAllEmployees() {
        List<Employee> controllerEmployee = new ArrayList<Employee>();

        controllerEmployee.add(new Employee(1,"Topic1","Description1"));

        Employees employees = new Employees(controllerEmployee);

        return employees;
    }
}

【问题讨论】:

标签: xml spring-boot jackson


【解决方案1】:

您需要按照here的建议在您的Employees类中使用以下注释@JacksonXmlElementWrapper(useWrapping = false)

@XmlRootElement
public class Employees {

@JacksonXmlProperty(localName = "Employee")
@JacksonXmlElementWrapper(useWrapping = false)
private List<Employee> employees;

public List<Employee> getEmployees() {
    return employees;
}

public void setEmployees(List<Employee> employees) {
    this.employees = employees;
}

public Employees(List<Employee> employees) {
    this.employees = employees;
}

}

这是您在更改代码后得到的响应,

<Employees>
  <Employee>
   <id>1</id>
   <name>Employee1</name>
   <department>Dev</department>
  </Employee>
  <Employee>
   <id>2</id>
   <name>Employee2</name>
   <department>QA</department>
  </Employee>
</Employees>

【讨论】:

    猜你喜欢
    • 2011-03-08
    • 2018-03-30
    • 1970-01-01
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 2021-12-23
    • 2015-11-07
    相关资源
    最近更新 更多