반응형
JAXB 란?
위키백과를 보면 JAXB를 다음과 같이 정의한다.
JAXB(Java Architecture for XML Binding) 란 자바 클래스를 XML로 표현하는 자바 API이다.
JAXB는 주로 2가지 기능이 있다.
자바 객체를 XML로 직렬화하는 것이고 반대로 XML에서 자바 객체로 역직렬화하는 것이다.
즉, JAXB는 메모리의 데이터를 XML 형식으로 변환하여 저장할 수 있고, 이 과정을 위해 프로그램의 각 클래스에서 XML을 읽고 저장하는 일을 구현해야 한다.
변환에 필요한 로직만 정리해보겠다.
VO 객체 설정
xml element로 사용할 객체에 @XmlRootElement 어노테이션을 등록한다.
@XmlRootElement(name="linkXmlVO")
@XmlAccessorType(XmlAccessType.FIELD)
@Component
public class LinkXmlVO {
private String name;
private String color;
private String sex;
private String url;
@Override
public String toString() {
return "LinkXmlVO [name=" + name + ", color=" + color
+ ", sex=" + sex + ", url=" + url + "]";
}
public String getName() {
return name;
}
public void setName(String name) {
name = name;
}
public String getColor() {
return color;
}
public void setColor(String color) {
color = color;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
sex = sex;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
url = url;
}
}
@XmlRootElement 로 linkXmlVO 객체를 xml의 <linkXmlVO>요소로 변환해준다.
@XmlRootElement(name = "linkXmlVOs")
@XmlAccessorType(XmlAccessType.FIELD)
@Component
public class LinkXmlVOs {
@XmlElement(name="linkXmlVO")
private List<LinkXmlVO> linkXmlVO = null;
public List<LinkXmlVO> getLinkXmlVO() {
return linkXmlVO;
}
public void setLinkXmlVO(List<LinkXmlVO> linkXmlVO) {
this.linkXmlVO = linkXmlVO;
}
}
마찬가지로 linkXmlVOs 객체를 xml의 <linkXmlVOs> 요소로 변환해준다.
JAXB 어노테이션의 자세한 속성은 아래 링크를 참고하자.
Link : https://howtodoinjava.com/jaxb/jaxb-annotations/
자바 객체를 XML 형식으로 변환하는 메소드
public void setXmlData(){
JAXBContext jc = null;
Marshaller marshaller = null;
List<LinkXmlVO> list = new ArrayList<>();
LinkXmlVOs linkXmlVOs = new LinkXmlVOs();
LinkXmlVO linkXmlVO = new LinkXmlVO();
try {
jc = JAXBContext.newInstance(LinkXmlVOs.class);
} catch (JAXBException e) {
e.printStackTrace();
}
linkXmlVO.setName("haenny");
linkXmlVO.setColor("blue");
linkXmlVO.setSex("female");
linkXmlVO.setUrl("https://www.naver.com/");
list.add(linkXmlVO);
linkXmlVOs.setLinkXmlVO(list);
try {
marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_ENCODING, "utf-8");
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.marshal(linkXmlVOs, System.out);
} catch (JAXBException e) {
e.printStackTrace();
}
}
실행결과
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<linkXmlVOs>
<linkXmlVO>
<name>haenny</name>
<color>blue</color>
<sex>female</sex>
<url>https://www.naver.com/</url>
</linkXmlVO>
</linkXmlVOs>
참고 사이트
Link : https://aljjabaegi.tistory.com/463
728x90
반응형
'JVM > Java' 카테고리의 다른 글
[Error] DB Connection 종료 에러 해결: No operations allowed after statement closed (2) | 2019.10.24 |
---|---|
[Java] StringBuffer append("a"+"b") 메모리는 어떻게 할당될까? (0) | 2019.08.01 |
[Java] String, StringBuffer, StringBuilder의 차이점 스윽 (0) | 2019.07.30 |
[Java] String과 new String 차이 (0) | 2019.07.30 |
[Java] 개발자라면 꼭 필요한 로그관리! Logger 사용 및 log4j2.xml 설정 방법 (0) | 2019.06.22 |
댓글