-
Java Architecture for XML Binding (JAXB)를 이용한 Marshal, Unmarshal개발 2013. 2. 6. 11:23반응형
참고 http://www.oracle.com/technetwork/articles/javase/index-140168.html
Bean 객체를 XML로 변환하고 XML를 Bean 객체로 자연스럽게 구조와 데이터를 Serialization/Deserialization 시켜준다.
어노테이션을 사용함.
1. Marshal, Unmarshal할 대상 Bean에 어노테이션을 붙여준다.
예) @XmlAccessorType(XmlAccessType.FIELD) // 노드 접근 순서
@XmlRootElement // 최상위 ROOT 노드 정의
public class User {
private String id;
private String password;
@XmlTransient // 무시하는 필드
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "[id=" + id + ", password=" + password + ", name=" + name + "]";
}
}
2. Marshal, Unmarshal할 기능 작성 - JAXBContext 객체를 이용
예)
//빈 객체 생성User user = new User();
user.setId("id");
user.setPassword("password");
user.setName("name");
//대상 객체에 대한 컨텍스트 객체 생성
JAXBContext ctx = JAXBContext.newInstance(User.class);
// 마샬링 객체 생성
Marshaller marshaller = ctx.createMarshaller();
//XML 아웃풋 포멧 설정
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
3. XML을 출력할 스트림 지정 (Object to XML)
예) //출력 스트림을 Wrtier, OutputStream, 등으로 지정가능
Writer writer = new StringWriter();
marshaller.marshal(user, writer);4. XML을 읽을 객체 지정 (XML to Object)
예)
// 언마샬링 객체는 컨텍스트 객체에서 따로 생성하여야함.
Unmarshaller unmarshaller = ctx.createUnmarshaller();
//인풋스트림을 Reader, InputStream, 등으로 지정가능
Reader reader = new StringReader(writer.toString());
Object obj = unmarshaller.unmarshal(new InputSource(reader));
편하지만 성능은 생각해야함.반응형'개발' 카테고리의 다른 글
Using the Quartz Scheduler (0) 2013.03.08 안드로이드를 위한 기본 정리 (1) (0) 2013.02.13 Commons IO의 파일 및 디렉터로 변경에 대한 모니터링 기능 사용 (0) 2013.02.01 JGropus의 사용자 프로토콜(헤더) 정의 하는 방법 (0) 2013.02.01 JGroups를 이용하여 메시지 전송시 주의점 (0) 2013.02.01