Trong bài viết trước, mình đã hướng dẫn các bạn chuyển đổi một tập tin XML sang thành một đối tượng Java sử dụng JAXB. Bài viết này mình sẽ hướng dẫn các bạn làm điều ngược lại, tức là chuyển đổi đối tượng Java sang tập tin XML sử dụng JAXB các bạn nhé!
Mình cũng có một project như sau:
Mình sẽ chuyển đổi đối tượng Student và các thuộc tính của nó sang một tập tin XML. Lớp Student phải được định nghĩa với các annotation của JAXB, cụ thể như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
package com.huongdanjava.jaxb; import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlRootElement; @XmlRootElement public class Student { private String name; private String age; private String code; public String getName() { return name; } @XmlElement public void setName(String name) { this.name = name; } public String getAge() { return age; } @XmlElement public void setAge(String age) { this.age = age; } public String getCode() { return code; } @XmlElement public void setCode(String code) { this.code = code; } @Override public String toString() { return "Student [name=" + name + ", age=" + age + ", code=" + code + "]"; } } |
OK, bây giờ chúng ta sẽ định nghĩa đối tượng Student trước nhé các bạn:
1 2 3 4 |
Student student = new Student(); student.setName("Khanh"); student.setCode("123456"); student.setAge("30"); |
Ở bài viết trước, mình đã giới thiệu với các bạn đối tượng JAXBContext để tạo đối tượng Unmarshaller, ngoài ra đối tượng này còn có thể tạo ra một đối tượng khác dùng cho mục đích của chúng ta trong bài viết này, đó là Marshaller.
1 2 |
JAXBContext jaxbContext = JAXBContext.newInstance(Student.class); Marshaller jaxbMarshaller = jaxbContext.createMarshaller(); |
Đối tượng Marshaller này cung cấp cho chúng ta nhiều phương thức overloaded marshal() dùng để chuyển đối đối tượng Java sang tập tin XML hoặc nhiều kiểu xuất khác.
1 2 |
File file = new File("E://student.xml"); jaxbMarshaller.marshal(student, file); |
Kết quả:
Nếu các bạn muốn định dạng lại tập tin XML thì có thể sử dụng đối tương Marshaller và thêm đoạn code sau:
1 |
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); |
Chạy lại chương trình và chúng ta sẽ có kết quả như sau:
Toàn bộ code như sau, các bạn có thể tham khảo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
package com.huongdanjava.jaxb; import jakarta.xml.bind.JAXBContext; import jakarta.xml.bind.JAXBException; import jakarta.xml.bind.Marshaller; import java.io.File; public class JaxbExample { public static void main(String[] args) { try { Student student = new Student(); student.setName("Khanh"); student.setCode("123456"); student.setAge("30"); JAXBContext jaxbContext = JAXBContext.newInstance(Student.class); Marshaller jaxbMarshaller = jaxbContext.createMarshaller(); jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); File file = new File("/Users/Khanh/Desktop/student.xml"); jaxbMarshaller.marshal(student, file); } catch (JAXBException e) { e.printStackTrace(); } } } |