-
JAXB(Java Architecture for XML Binding)Java 2016. 9. 7. 17:38
JAXB(Java Architecture for XML Binding)
단계별로 JAXB2에 대해서 알아보겠습니다. 여기서는 JAXB 버전 2를 기반으로합니다. JAXB는 자바 객체를 XML과 바인딩하기 위한 자바 아키텍처로 가장 인기있는 API 및 산업 표준 중 하나입니다. 인터넷을 통해 통신하는 웹 서비스를 사용하는 곳에서 많이 사용됩니다. 표준 API는 (JDK 버전 1.6에서 시작) JDK와 함께 제공합니다.
Marshalling : 자바 객체를 XML문서로 만듭니다. UnMarshalling : XML문서를 자바 객체로 만듭니다. JAXB Annotations : JAXB annotation을 사용합니다.
JAXB2 Annotations
@XmlRootElement : 특정 클래스에 의해 생성 된 XML 문서의 루트 엘리먼트를 지정할 수있다. 기본적으로 클래스 이름이 루트 요소로 사용되지만 name속성을 통해 사용되는 다른 이름을 지정할 수 있습니다.
예) @XmlRootElement(name = "Student")
@XmlType : XML 요소를 생성 할때 XML에 표시되는 순서를 지정한다. 순서를 지정할 때는 propOrder속성을 이용한다.
예) @XmlType(propOrder = { "firstName", "lastName", "dob", "section" })
@XmlAccessorType : 메소드 레벨 또는 필드 레벨에 사용할 수있다.
예) @XmlAccessorType(XmlAccessType.FIELD)
@XmlAttribute : XML의 속성에 자바 빈 속성을 매핑합니다.
예) @XmlAttribute(name = "id")
@XmlElement : XML 요소에 자바 빈 속성을 매핑합니다. 기본적으로 한 번 @XmlRootElement클래스 레벨에서 선언 된 모든 속성 (또는 필드)가 다른 decared하지 않는 한, 자바 빈 속성 이름과 같은 이름을 가진 XML 요소로 간주됩니다 원하는 경우 name 속성을 사용하여 다른 이름을 지정할 수 있습니다.
예) @XmlElement(name = "last-name")
@XmlElementWrapper : 요소의 컬렉션 래퍼를 만드는 데 사용할 수 있습니다.
예) 아래처럼 지정하고 @XmlElementWrapper(name="all-subjects") @XmlElement(name="subject") private List<String> subjects; 다음과 같이 데이터를 넣으면 List<String> subjects = new ArrayList<String>(); subjects.add("Maths"); subjects.add("Science"); subjects.add("Economics"); 결과는 아래와 같이 생성된다. <all-subjects> <subject>Maths</subject> <subject>Science</subject> <subject>Economics</subject> </all-subjects>
@XmlList : @XmlList 공간이 구분 문자와 같은 요소들의 집합을 나타내는 데 사용될 수있다.
예) 아래처럼 지정하면 @XmlList private List<String> groups; 다음과 같이 데이터를 넣으면 List<String> groups = new ArrayList<String>(); groups.add("Techies"); groups.add("Volunteers"); 결과는 아래와 같이 생성된다. <groups>Techies Volunteers</groups>
@XmlTransient : XML 매핑에서 제외 할 수 있습니다. 기본적으로 @XmlRootElement클래스 레벨에 존재하는 모든 요소는 XML로 매핑됩니다, 하지만 @XmlTransient로 정의할 경우 XML에 표시되지 않습니다.
예) @XmlTransient private String section;
@XmlJavaTypeAdapter : XML 형태와 자바 형식 변환에 사용하는 어댑터를 지정하기 위해 사용될 수있다.
예) 아래처럼 지정하면 @XmlElement(name = "birthDate") @XmlJavaTypeAdapter(LocalDateAdapter.class) private LocalDate dob; LocalDateAdapter클래스의 내용대로 아래와 같이 출력된다. <birthDate>1956-10-01</birthDate> LocalDateAdapter클래스는 XmlAdapter클래스를 상속해서 만든다.
import javax.xml.bind.annotation.adapters.XmlAdapter; import org.joda.time.LocalDate; public class LocalDateAdapter extends XmlAdapter<String, LocalDate> { public LocalDate unmarshal(String v) throws Exception { return new LocalDate(v); } public String marshal(LocalDate v) throws Exception { return v.toString(); } }
'Java' 카테고리의 다른 글
십이지신 계산하기1 (0) 2017.04.28 JDK설치하기 (0) 2016.09.09 Lambda Expression 05 (0) 2016.08.09 Lambda Expression 04 (0) 2016.08.09 JPA(Java Persistent API) (0) 2016.08.01 댓글