Jackson으로 XML을 파싱하기 위해서 다음의 dependency를 추가합니다. Jackson이 이미 dependency로 추가되어 있다면 버전 충돌이 발생하지 않도록 버전을 맞추시기 바랍니다.
코드 블럭 |
---|
language | xml |
---|
linenumbers | true |
---|
|
<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)로 매핑하는 것을 권장합니다.
코드 블럭 |
---|
language | java |
---|
linenumbers | true |
---|
|
String xml = "<user><name>BYOUNG GON, KIM</name><username>fharenheit</username></user>";
XmlMapper mapper = new XmlMapper();
User user = mapper.readValue(xml, User.class); |
...
코드 블럭 |
---|
language | java |
---|
linenumbers | true |
---|
|
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;
}
}
|
...