如何将POJO列表转换为XML元素

时间:2019-01-23 22:40:56

标签: java spring spring-boot jaxb

我正在使用Spring Boot,我想将POJO转换为XML。最简单的方法是什么?

例如,我有一个Person POJO:

public class Person {
  private String firstName;
  private String lastName;
  //getters/setters
}

如何将List<Person>转换为此:

<rootElement>
  <person>
    <firstName>John</firstName>
    <lastName>Smith</lastName>
  </person>
</rootElement>

我应该使用哪个类来封装它? Jackson的等效项是JsonNode软件包中的com.fasterxml.jackson.databind。我可以从Spring Boot中使用任何预配置的bean吗?

2 个答案:

答案 0 :(得分:0)

手动

您可以使用上面提到的Jackson library with XML dataformat

implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.9.8'

序列化:

Person person = new Person("Ima", "Person")
XmlMapper xmlMapper = new XmlMapper();
String personXml = xmlMapper.writeValueAsString(person);

反序列化:

XmlMapper xmlMapper = new XmlMapper();
Person person = xmlMapper.readValue(personXml, SimpleBean.class);

通过REST API

我将本节保留在此处,因为它可能与将SpringBoot用于Web服务器的其他人有关:

或者,如果您使用标准的spring-boot-starter-web并希望通过REST API提供输出XML,那么Spring将自动为您进行转换。例如,此方法的Person返回类型意味着Spring将自动处理personService.findById(id)输出的转换和传输

 @GetMapping("/person")
public Person getPerson(@RequestParam("id") String id) {
    return personService.findById(id);
}

默认情况下,它将以JSON格式提供有效载荷对象,但您可以通过为Jackson XML data format添加以上依赖项来将其更改为XML。

并在请求标头中另外将接受类型设置为Application / XML

答案 1 :(得分:0)

要直接将列表转换为xml ,我使用|Big Group|Sub Group| Animals ----------------------------------- | A1 | a | raccoon; bear ----------------------------------- | B2 | b | dog ----------------------------------- | B2 | c | tiger; lion ----------------------------------- | A1 | d | deer -----------------------------------

您可以如下注释pojo类

Sub combi()
Dim i As Long
lastRow = 7

For i = lastRow To 2 Step -1
    If Cells(i, 2).Value = Cells(i - 1, 2).Value Then
        Cells(i - 1, 3).Value = Cells(i - 1, 3).Value & ";" & Cells(i, 3).Value
        Rows(i).Delete
    End If
Next i
End Sub 

并制作一个包装它的List类。

javax.xml.bind.marshaller

}

您可以在下面的方法中使用Jaxb。

@XmlRootElement("Person")
@XmlAccessorType(XmlAccessType.FIELD)
public class Person {

    private String firstName;
    private String lastName;
    //getters/setters
}

输出将是:

@XmlRootElement(name = "Persons_List")
public class Persons_List {

    List<Person> persons;
    // Getters and Setters