亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將 POJO 列表轉換為 XML 元素

如何將 POJO 列表轉換為 XML 元素

胡說叔叔 2022-05-21 20:02:06
我正在使用 Spring Boot,我想將 POJO 轉換為 XML。最簡單的方法是什么?例如,我有一個PersonPOJO:public class Person {  private String firstName;  private String lastName;  //getters/setters}如何將 a 轉換List<Person>為:<rootElement>  <person>    <firstName>John</firstName>    <lastName>Smith</lastName>  </person></rootElement>我應該使用什么類來封裝它?杰克遜的等價物JsonNode來自com.fasterxml.jackson.databind包裝。我可以從 Spring Boot 中使用任何預配置的 bean 嗎?
查看完整描述

2 回答

?
一只名叫tom的貓

TA貢獻1906條經驗 獲得超3個贊

手動


您可以將提到的Jackson 庫與 XML 數據格式一起使用:


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 將自動為您進行轉換。eg.該方法的Person返回類型表示Spring會自動處理personService.findById(id)的輸出的轉換和傳輸


 @GetMapping("/person")

public Person getPerson(@RequestParam("id") String id) {

    return personService.findById(id);

}

默認情況下,它將以 JSON 格式為您的有效負載對象提供服務,但您可以通過為Jackson XML 數據格式添加上述依賴項將其更改為 XML


另外將請求標頭中的 Accept 類型設置為 Application/XML


查看完整回答
反對 回復 2022-05-21
?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

為了將列表直接轉換為 xml,我使用javax.xml.bind.marshaller.


您可以如下注釋您的 pojo 類


@XmlRootElement("Person")

@XmlAccessorType(XmlAccessType.FIELD)

public class Person {


    private String firstName;

    private String lastName;

    //getters/setters

}

并制作一個包裝它的 List 類。


@XmlRootElement(name = "Persons_List")

public class Persons_List {


    List<Person> persons;

    // Getters and Setters

}


您可以在您的方法中使用 Jaxb,如下所示。


List<Person> persons = new List<Person>();

// add Person elements to it.

persons.add(person1);

persons.add(person2);


Persons_List persons_list = new Persons_List();

persons_list.setPersons(persons);


JAXBContext context = JAXBContext.newInstance(Persons_List.class, Person.class);

Marshaller jaxbMarshaller = context.createMarshaller();

jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);


//if you want to output to file.

OutputStream os = new FileOutputStream( "Person.xml" );

jaxbMarshaller.marshal(persons_list, os);


//if you want to display in console.

 jaxbMarshaller.marshal(persons_list,new PrintWriter(System.out));

輸出將是:


<Persons_List>

   <Person>

       <firstName>John</firstName>

       <lastName>Smith</lastName>

   </Person>

   <Person>

       <firstName>Will</firstName>

       <lastName>Smith</lastName>

   </Person>

</Persons_List>


查看完整回答
反對 回復 2022-05-21
  • 2 回答
  • 0 關注
  • 197 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號