ABOUT ME

B급 개발자 이야기, 인생은 B 컷이 전부다.

Today
Yesterday
Total
  • xstream을 이용한 Marshal, Unmarshal
    개발 2013. 3. 12. 16:47
    반응형

    참고 http://xstream.codehaus.org/index.html


    기본적인 기능은 JAXB와 같음. JAVA to XML, XML to JAVA.


    어노테이션을 사용함.


    1. Marshal, Unmarshal할 대상 Bean에 어노테이션을 붙여준다.



    예)

    package com.tistory.codesnippet.xstream.model;


    import com.thoughtworks.xstream.annotations.XStreamAlias;


    @XStreamAlias("user")  

    public class User {

    private String id;

    private String password;

    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할 기능 작성 - XStream객체를 이용


    예)
    //빈 객체 생성

    User user = new User();

    user.setId("id");

    user.setPassword("password");

    user.setName("name");


    //대상 객체에 대한 컨텍스트 객체 생성

    // StAX 혹은 Dom으로 사용가능

    XStream xstream = new XStream(new StaxDriver());

    //XStream xstream = new XStream(new DomDriver("UTF-8"));


    // 사용할 객체 등록

    xstream.alias("user", User.class);



    3. XML을 출력할 스트림 지정 (Object to XML)


    예)

    //단순 변환

    String xml = xstream.toXML(user);


    // 인코딩 처리

    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

    Writer writer = new OutputStreamWriter(outputStream, "UTF-8");

    writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n");

    xstream.toXML(user, writer);

    String xml = writer.toString();

    String xml = outputStream.toString();



    4. XML을 읽을 객체 지정 (XML to Object)


     예)

    // 단순 변환

    User newUser = (User) xstream.fromXML(xml);


    // 스트림 처리

    byte[] buf = xml.getBytes("UTF-8"); // 읽어들인 xml

    ByteArrayInputStream inputStream = new ByteArrayInputStream(buf);

    Reader reader = new InputStreamReader(inputStream, "UTF-8");

    User newUser = (User) xstream.fromXML(reader);


    편하지만 성능은 생각해야함.


    성능 테스트를 해보는것도 좋은 방법일 듯


    비교 http://codesnippet.tistory.com/category/JAVA/JAXB




    반응형
Designed by Tistory.