본문 바로가기

spring

XStream



 

    
    
    



//xstream.java
public class xstream
{
    public static void main(String[] args)
    {
        XStream xstream = new XStream(new DomDriver("euc-kr"));
        xstream.alias("list", List.class);
        xstream.processAnnotations(List.class);
        xstream.processAnnotations(N.class);
 
        try{
            InputStream reader = new FileInputStream("get_data.xml");
             
            List list = (List)xstream.fromXML(reader);
             
            System.out.println("ky :" + list.Ka);
            System.out.println("fn :" + list.FN);
             
            for (N n: list.ns)
            {
                System.out.println("n url :" + n.url);
                System.out.println("n text :" + n.text);
            }
        }catch(IOException e){
            e.printStackTrace();
        }
    }
}


//N.java
public class N
{
    @XStreamAsAttribute
    public String url;
    @XStreamAsAttribute
    public String text;
}


//List.java
@XStreamAlias("list")
public class List
{
    @XStreamAsAttribute
    public String DN;
    @XStreamAlias("KY")
    @XStreamAsAttribute
    public String Ka;
    @XStreamAsAttribute
    public String FN;
    @XStreamAsAttribute
    public String UR;
 
     
    @XStreamImplicit(itemFieldName = "n")
    public ArrayList ns;
}




List.java 를 보면 각 필드 위에 @XStreamAsAttribute 을 적어주었다.
필드를 에트리뷰트로 인식하라는 어노테이션이다.
적지 않으면 에러는 나지 않지만 값을 못가져온다.
또한 Alias도 반드시 지정을 해야한다. 뭐 속성명을 클래스로 하면 좋겠지만, 나같이 대소문자 구분이 있거나,
다르게 했을경우는 Main에 xstream.alias("list", List.class); 를 적거나 List 클래스명 위에 @XStreamAlias("list")를 적어주면 된다.
xstrem : http://xstream.codehaus.org/ 출처 : http://dol9.tistory.com/87