2008년 01월 15일
[번역] XStream 배우기 : 2분만에 배우는 XStream
XStream 튜토리얼이 한글로 번역된 것이 없어서 시간 될 때마다 하나씩 번역해 올려보겠습니다.
튜토리얼 구성은 이렇습니다.
- 2분만에 배우기 (원글)
- 별칭(Alias) 배우기 (원글)
- 애노테이션(Annotations) 배우기 (원글)
- 변환기(Converter) 배우기 (원글)
- 객체 스트림(Object Streams) 배우기 (원글)
- 영속화 API(Persistence API) 배우기 (원글)
- JSON 배우기 (원글)
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를 객체로 되돌립니다.
XStream vs Castor for XML serialization : XStream과 Castor 작업한 경험을 쓴 글입니다.
XML and Java technologies: Data binding, Part 2: Performance : XML과 객체를 바인딩하는 솔루션들의 성능을 비교했습니다. XStream은 빠져있습니다.
Comparing Java Data Binding Tools : Java 객체와 XML의 바인딩 도구들을 비교했습니다. 이 또한 XStream이 나오기 전에 만들어진 문서라서 XStream은 빠져있습니다.
Thoughts on Web Services, part 5: To serialize or not to serialize : XML로 직렬화하는 것에 대한 이슈를 적었습니다.
이 글과 관련있는 글을 자동검색한 결과입니다 [?]
- XMLHttpRequest 객체 by jbeom
- [번역] XStream 배우기 : 별칭(Alias) 배우기 by 박성철
- Flash에서 Xml 파싱이 되지 않을때 by 희돌군
# by | 2008/01/15 14:11 | 프로그래밍 이야기 | 트랙백 | 덧글(3)


![[수입] 요요 마가 연주한 엔니오 모리코네 [CD+DVD 듀얼 디스크]](http://image.aladdin.co.kr/coveretc/music/coveroff/2592437362_1.jpg)
![[SACD] 조수미 (Sumi Jo) - Journey To Baroque (바로크로의 여행)](http://image.aladdin.co.kr/coveretc/music/coveroff/1011203995_1.jpg)







☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
즐거운 개발 되세요.