Object를 XML형식으로 빠르게 변환할 수 있다..!
1. 루트 클래스 선언
@XmlRootElement : 말그대로 루트 엘리먼트(최상위 요소)를 지정한다. 나중에 JAXBContext에 등록해주어야 함
@XmlAccessorType : 바인딩 시 필드 및 특성..(?) PUBLIC_MEMBER, FIELD, PROPERTY, NONE의 네 가지 속성이 있음
- FIELD - 클래스의 모든 필드(static이 아니고 transient가 아닌)를 모두 XML에 바인딩
- NONE - 어노테이션으로 지정하지 않는한 모든 필드는 XML에 바운딩되지 않는다.
- PROPERTY - getter/setter를 가진 모든 필드들은 자동으로 XML에 바운드된다.
- PUBLIC_MEMBER - 모든 public getter/setter들은 자동으로 XML에 바운드된다.
@XmlRootElement(name = "ROOT")
@XmlAccessorType(XmlAccessType.FIELD)
public class ButtonXml {
@XmlElement(name = "BTN")
private List<Button> buttons;
public List<Button> getButtons() {
return buttons;
}
public void setButtons(List<Button> buttons) {
this.buttons = buttons;
}
}
BTN들을 감싸는 최상위 요소(<ROOT>)를 만들었다고 보면 된다..
<ROOT>
<BTN></BTN>
<BTN></BTN>
</ROOT>
2. 객체 생성
여기도 마찬가지로 XmlRootElement와 XmlAccessorType을 지정해줬다.
@XmlRootElement(name = "BTN")
@XmlAccessorType(XmlAccessType.FIELD)
@Getter
@Setter
@ToString
public class Button {
/* 생략 */
}
3. XML생성!
public void convertButtonListToXml(List<Button> buttons) {
ButtonXml buttonXml = new ButtonXml();
buttonXml.setButtons(buttons);
try {
// Create JAXB Context
JAXBContext jaxbContext = JAXBContext.newInstance(ButtonXml.class);
// Create Marshaller
Marshaller marshaller = jaxbContext.createMarshaller();
// Print XML String to Console
StringWriter stringWriter = new StringWriter();
// Write XML to StringWriter
marshaller.marshal(buttonXml, stringWriter);
// Verify XML Content
String xmlContent = stringWriter.toString();
System.out.println(xmlContent);
} catch (JAXBException e) {
e.printStackTrace();
}
}
+) 참고
'STUDY > Java' 카테고리의 다른 글
Java | Builder패턴 (Lombok @Builder) (0) | 2021.03.29 |
---|---|
Java | MultipartFile image width와 height 알아내기 (0) | 2021.03.25 |
Java | java 11 설치하기 (0) | 2020.12.15 |
Java | Primitive Types ( + Overflow/Underflow ) (0) | 2020.08.24 |
Java | 추상클래스(abstract class) / 인터페이스(Interface) (0) | 2020.05.18 |