버전 비교

  • 이 줄이 추가되었습니다.
  • 이 줄이 삭제되었습니다.
  • 서식이 변경되었습니다.

Jackson으로 XML을 파싱하기 위해서 다음의 dependency를 추가합니다. Jackson이 이미 dependency로 추가되어 있다면 버전 충돌이 발생하지 않도록 버전을 맞추시기 바랍니다.

코드 블럭
languagexml
linenumberstrue
<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
    <version>2.11.2</version>
</dependency>

XML이 있는 경우 다음과 같이 XmlMapper로 파싱할 수 있습니다. 만약에 unmarshal할 Type을 모르겠다면 Map으로 하시기 바랍니다. 물론 Map에서 값을 꺼내기 위해서 코드를 많이 작성해야 합니다. Map의 경우 Key Value 형식으로 데이터가 저장되므로 배열을 넣는 경우 문제가 발생할 수 있으므로 POJO(Plain Old Java Object)로 매핑하는 것을 권장합니다.

코드 블럭
languagejava
linenumberstrue
String xml = "<user><name>BYOUNG GON, KIM</name><username>fharenheit</username></user>";
XmlMapper mapper = new XmlMapper();
User user = mapper.readValue(xml, User.class);

...

코드 블럭
languagejava
linenumberstrue
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;

import java.util.ArrayList;
import java.util.List;

public class AccessControlList {

    @JacksonXmlElementWrapper(useWrapping = false)                → List형인 경우 지정하도록 함
    @JacksonXmlProperty(localName = "Grant")
    protected List<Grant> grant;

    public List<Grant> getGrant() {
        if (grant == null) {
            grant = new ArrayList<Grant>();
        }
        return this.grant;
    }

}

...