xml <-> java object ... 삽질할 생각을 하니 답이 안 나온다.
그나마 Digester, apache의 xml Project가 있긴하지만, 성에 차지 않는다.
그래서 여기저기 찾아본 결과 JAXB, XStream 이 급 땡기게 한다. ㅎ
아주 기본적인 수준의 사용법만 정리해 본다.
1. JAVA -> XML (JAXB)
2. JAXB -> JSON (Jersey)
3. JAVA -> XML (XStream)
4. JAVA -> JSON (XStream)
0. JAXB란?
JAXB는 XML 사용 시 낮은 수준의 정보에서 사용자와 사용자의 코드를 숨겨 자바 애플리케이션의 XML 데이터를 간단히 사용할 수 있도록 합니다. JAXB를 사용하면 XML과 자바 간에 쉽게 앞뒤로 이동할 수 있습니다. JAXB 구현은 XML 스키마를 받아 해당 스키마에 매핑되는 자바 클래스를 생성하는 스키마 컴파일러를 제공합니다. XML 문서의 데이터는 JAXB의 바인딩 런타임 프레임워크를 통해, 스키마 컴파일러가 생성한 클래스에 자동으로 바인딩될 수 있습니다. 이 작업을 언마샬링(Unmarshalling)이라고 합니다. 언마샬링되면 필요에 따라 콘텐츠를 Java로 조작하거나 수정할 수 있습니다. JAXB는 자바 개체에서 XML 인스턴스 문서로 데이터를 쓸(마샬링할) 수도 있습니다. JAXB는 경우에 따라 이러한 작업의 일부로 콘텐츠에 대한 검증을 수행합니다. (SDN 발췌)
1. 맛보기
따로 설명이 필요 없을정도로 심플하다.
2. List
List는 기본적으로 지원을 해 준다.
확인해봐 줄 점은.. @XmlElementWrapper 정도.. List 에 대해서 한번더 묶어 준다.
아쉬운점은 <items size="2"> 와 같이 size값을 속성으로 넣어주고 싶었지만, 기본옵션으로는 힘들것 같다. 한번더 쌓줘야 할것 같다. --;
2. Map
문제는 Map 형태의 데이터이다.
List처럼 기본적으로 지원이 되지 않기 때문에 Adapter를 별도로 구현해야 한다.
Map을 기본 지원 형식으로 변환을 해야 하는데, 본인이 원하는 형대로 구성을 하면 된다.
Map형태를 List형태로 변환을 해서 뿌려질수 있도록 Adapter를 구현해 보겠다.
Adapter는 javax.xml.bind.annotation.adapters.XmlAdapter를 상속받아 marshal(), unmarshal() 를 Overriding 해야 한다.
XmlAdapter<ListFormatType, Map<String, Item>> 에서 앞에 ListFormatType는 변환후의 처리될 Object 이고, 뒤에 Map<String, Item>은 변환대상 포멧이다.
결과적으로 Adapter를 통해서 ListFormatType이 xml로 변환된다.
3. 참고
삽질하는 동안 여기저기서 참고했던 사이트 들 입니다.
http://blog.sdnkorea.com/blog/tag/jaxb (New Window)
http://vicki.tistory.com/tag/JAXB (New Window)
기타 많~~은 사이트..
'java6'에 해당되는 글 1건
- 2009/11/17 JAVA -> XML (JAXB)
View Comments,
Trackbacks
댓글을 달아 주세요