-
[JAVA] JAXB - Marshalling, UnMarshalling 사용법Java/기타 2019. 5. 18. 17:54반응형
JAXB 이란?
JAXB(Java Architecture for XML Binding)는 Java Object를 XML로 직렬화하고, XML을 Java Object로 역직렬화해주는 자바 API 입니다.
JDK6 ~ 9 버전은 JAXB가 내장되어 있어 라이브러리를 추가 할 필요가 없습니다.
JAXB Github - https://github.com/javaee/jaxb-v2
JAXB Annotation
@XmlRootElement - XML의 Root Element 명을 정의합니다.
@XmlElement - XML의 Element 명을 정의합니다.
@XmlType - XML 스키마 이름과 namespace를 정의합니다. propOrder 속성을 이용해서 XML 표현 시 요소들의 표현 순서를 정의합니다.
@XmlElementWrapper - 다른 XML 요소들을 감싸는 역할을 합니다. List 같은 컬렉션 객체들을 XML 변환할 때 사용할 수 있습니다.
Java Object를 XML로 변환
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455package com.tychejin.study.xml;import java.io.File;import java.util.ArrayList;import java.util.List;import javax.xml.bind.JAXBContext;import javax.xml.bind.JAXBException;import javax.xml.bind.Marshaller;public class XmlExample01 {public static void main(String[] args) {User user = setUser();try {File file = new File("C:\\user.xml");JAXBContext jaxbContext = JAXBContext.newInstance(User.class);Marshaller jaxbMarshaller = jaxbContext.createMarshaller();jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);jaxbMarshaller.marshal(user, file);jaxbMarshaller.marshal(user, System.out);} catch (JAXBException e) {e.printStackTrace();}}public static User setUser() {User user = new User();user.setName("XML");user.setAge(22);List<String> list = new ArrayList<String>();list.add("XML은 구조적인 데이터를 위한 것이다.");list.add("XML은 다소 HTML 같이 보인다.");list.add("XML은 텍스트이며, 읽히는 것만을 뜻하지 않는다.");list.add("XML은 크기가 커진다.");list.add("XML은 기술의 집합이다.");list.add("XML은 새로운 기술이 아니라 발전한 기술이다.");list.add("XML은 HTML에서 XHTML로 이끌었다.");list.add("XML은 모듈식이다.");list.add("XML은 RDF와 시맨틱 웹의 토대이다.");list.add("XML은 라이선스 제약이 없으며, 플랫폼이 독립적이고, 많은 지원이 있다.");user.setMessages(list);return user;}}cs 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354package com.tychejin.study.xml;import java.util.List;import javax.xml.bind.annotation.XmlElement;import javax.xml.bind.annotation.XmlElementWrapper;import javax.xml.bind.annotation.XmlRootElement;@XmlRootElementpublic class User {private String name;private int age;private List<String> messages;public String getName() {return name;}@XmlElementpublic void setName(String name) {this.name = name;}public int getAge() {return age;}@XmlElementpublic void setAge(int age) {this.age = age;}public List<String> getMessages() {return messages;}@XmlElementWrapper(name="messages")@XmlElement(name="message")public void setMessages(List<String> messages) {this.messages = messages;}@Overridepublic String toString() {String result = "";result = "[name:"+ name + ",age:"+ age +",messages:"+ messages +"]";return result;}}cs JSON을 Java Object로 변환
123456789101112131415161718192021222324252627package com.tychejin.study.xml;import java.io.File;import javax.xml.bind.JAXBContext;import javax.xml.bind.JAXBException;import javax.xml.bind.Unmarshaller;public class XmlExample02 {public static void main(String[] args) {try {File file = new File("C:\\user.xml");JAXBContext jaxbContext = JAXBContext.newInstance(User.class);Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();User customer = (User) jaxbUnmarshaller.unmarshal(file);System.out.println(customer);} catch (JAXBException e) {e.printStackTrace();}}}cs 반응형'Java > 기타' 카테고리의 다른 글
[JAVA] json-simple 라이브러리를 사용한 JSON 데이터 처리 (0) 2019.06.28 [JAVA] Gson 라이브러리를 사용한 JSON 데이터 처리 (0) 2019.05.19 [JAVA] Jackson 라이브러리를 사용한 JSON 데이터 처리 (0) 2019.05.14 [JAVA] The reference to entity "문자" must end with the ';' delimiter. (0) 2019.05.08 [Java] String, StringBuffer, StringBuilder의 클래스의 특징 (0) 2019.01.04