site_link1 | http://gyumee.egloos.com/1291803 |
---|---|
site_link2 | |
site_link3 | http://1 |
XStream은 자바 객체를 XML로 직렬화 시키는 데 사용하는 도구입니다. 다르게 말하면 XML과 객체를 쌍방향 맵핑시켜주는 도구입니다. 자바 객체를 XML로 만들어서 파일이나 DB에 저장하거나 네트워크를 통해서 전송할 수 있게 해줍니다. 거꾸로 이렇게 만들어진 XML을 객체로 복원하기도 하고요. 비슷한 다른 유명 프로젝트로 Castor 와 자바 표준 JAXB 그리고 Quick 등이 있습니다.
XStream 튜토리얼이 한글로 번역된 것이 없어서 시간 될 때마다 하나씩 번역해 올려보겠습니다.
튜토리얼 구성은 이렇습니다.
- 2분만에 배우기 (원글)
- 별칭(Alias) 배우기 (원글)
- 애노테이션(Annotations) 배우기 (원글)
- 변환기(Converter) 배우기 (원글)
- 객체 스트림(Object Streams) 배우기 (원글)
- 영속화 API(Persistence API) 배우기 (원글)
- JSON 배우기 (원글)
오늘은 간단한 XStream을 사용법을 전체적으로 볼 수 있는 2분만에 배우기입니다.
2분만에 배우기
이 글은 XStream에 대해 아주 간단히 소개합니다. 대충 읽으시면 객체를 XML로 변환하고 그것을 거꾸로 복원하는 것이 얼마나 단순한지 아실 수 있습니다. 물론 앞으로 궁금한 부분이 생기실 것입니다.
직렬화될 객체 만들기
여기 간단한 클래스 두개가 있습니다. XStream은 이 객체들의 인스턴스를 XML로 변환하고 다시 복원할 수 있습니다.
public class Person { private String firstname; private String lastname; private PhoneNumber phone; private PhoneNumber fax; // ... constructors and methods } public class PhoneNumber { private int code; private String number; // ... constructors and methods }
Note: 필드들이 private인 것을 주목하십시오. XStream은 필드의 접근 제한을 무시합니다. getter와 setter 또한 필요하지 않습니다. XStream은 기본 생성자를 꼭 만들어야 하는 제한도 없습니다.
XStream 초기화
XStream을 쓰려면 단순히 XSTream 객체를 생성하십시오.
XStream xstream = new XStream();
클래스 패스에 xstream-[version].jar와
xpp3-[version].jar가 있어야 합니다.
XPP3 는 아주 빠른 XML pull parser 구현체입니다. 이 것에 종속되기 원하지 않는다면 대신 표준 JAXP DOM 파서를 사용할 수 있습니다.
XStream xstream = new XStream(new DomDriver()); // XPP3 라이브러리를 요구하지 않음Note: 이 클래스는 일반적인 동작들을 위해 설계된 간단한 퍼세이드입니다. 보다 큰 융통성을 위해서, 다른 동작을 하는 자신만의 퍼세이드를 만드는 길을 택할 수도 있습니다.
이제 XStream으로 보다 간편히 XML 출력을 만들기위해, 위의 클래스의 이름을 XML 요소명으로 대응하는 별칭을 만들 수 있습니다.
xstream.alias("person", Person.class); xstream.alias("phonenumber", PhoneNumber.class);
Note: 이 단계는 선택사항입니다. 이 작업 없이도 XStream은 잘 작동하지만 XML 요소 이름이 객체의 패키지를 포함한 전체 이름을 갖게 되기 때문에 조금은 크기가 커집니다. 다음에 진행될 "별칭 배우기" 참고하시면 자세한 내용을 아실 수 있습니다.
되
객체를 XML로 직렬화하기
Person 객체를 생성하고 필드에 값을 넣도록 하겠습니다.
Person joe = new Person("Joe", "Walnes"); joe.setPhone(new PhoneNumber(123, "1234-456")); joe.setFax(new PhoneNumber(123, "9999-999"));
이제 XML로 변환하기 위해 해야 하는 것이라고는 단순히 XStream을 호출하는 것뿐 입니다.
String xml = xstream.toXML(joe);
결과는 다음과 같습니다.
<person> <firstname>Joe</firstname> <lastname>Walnes</lastname> <phone> <code>123</code> <number>1234-456</number> </phone> <fax> <code>123</code> <number>9999-999</number> </fax> </person>
이렇게 간단합니다. XML이 얼마나 깔끔한지 보십시오.
직렬화된 XML에서 객채를 복원하기
다시 객체를 재조립하려면 이렇게 하십시오.
Person newJoe = (Person)xstream.fromXML(xml);
XStream은 이렇게 단순합니다.
정리
다시 정리해봅니다.
- xstream.alias(String elementName, Class cls)를 사용해서 자작한 클래스를 요소이름에 대응시킬 클래스 이름의 별칭을 만듭니다.
- xstrean.toXML(Object obj)를 사용해서 객체를 XML로 변환합니다.
- xstream.fromXML(String xml)을 사용해서 XML를 객체로 되돌립니다.
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
6 | Map <-> XML (2) | 황제낙엽 | 2011.04.29 | 362 |
5 | XML -> (Map) XML | 황제낙엽 | 2011.04.29 | 131 |
4 | Custom XStream Converter | 황제낙엽 | 2011.04.26 | 279 |
3 | XStream 배우기 : 변환기(Converter) 배우기 | 황제낙엽 | 2011.04.20 | 373 |
2 | XStream 배우기 : 별칭(Alias) 배우기 | 황제낙엽 | 2011.04.20 | 416 |
» | XStream 배우기 : 2분만에 배우는 XStream | 황제낙엽 | 2011.04.20 | 116 |