본문 바로가기

STUDY/Java

Java | 객체를 XML로 쉽게 변환하기 (JAXB, javax.xml)

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();
    }

}

 

 

JAXB Write Java Object to XML Example - HowToDoInJava

Java example to write Java object to XML. Information stored in Java objects fields can written into XML file or simply XML string as well. 1) Convert Java Object to XML String To write Java object to XML String, first get the JAXBContext. It is entry poin

howtodoinjava.com


+) 참고

 

A Guide to JAXB Annotations - HowToDoInJava

Learn about JAXB annotations in detail along with their usage during marshalling and unmarshalling operations eg. @XmlRootElement, @XmlElement and @XmlList,

howtodoinjava.com