2013-04-23 2 views
0

simpleframework를 사용하여 XML 파일을 Java 객체로 변환 중입니다. 내 XML의 내부 노드가 바뀌면 제네릭을 사용하고있다. 그러나 simpleframework는 변환하는 동안 오류를 발생시킵니다.XML to java simpleframework을 사용한 객체 변환

@Root(name = "searchresult", strict = false) 
public class ResponseVO<T> 
{ 
    @ElementList(entry = "document", inline = true) 
    public List<T> elementVOList = new ArrayList<T>(); 

    public List<T> getElementsVOList() 
    { 
     return elementVOList; 
    } 

    public void setElementsVOList(List<T>list) 
    { 
     elementVOList = list; 
    } 
} 

ResponseVO 아래와 같이 다양한 VO로에 대한 컨테이너입니다 : 여기 내 예제 코드입니다

@Root(name = "document", strict = false) 
public class Projects_Display_VO 
{ 

    @Element(name = "projectname") 
    private String projectName; 


    @Attribute(name = "id") 
    private int tmpid; 

    public int getTmpid() 
    { 
     return tmpid; 
    } 

    public void setTmpid(int tmpid) 
    { 
     this.tmpid = tmpid; 
    } 
    /** 
    * ProjectId 
    */ 

    @Element(name = "projectid") 
    private String projectID; 


    public String getProjectName() 
    { 
     return projectName; 
    } 

    public void setProjectName(String projectName) 
    { 
     this.projectName = projectName; 
    } 

    public int getProjectID() 
    { 
     return Integer.parseInt(projectID); 
    } 

    public void setProjectID(String projectID) 
    { 
     this.projectID = projectID; 
    } 
} 

그리고 XML 파일은 다음과 같습니다 :

<searchresult> 
    <query>id:(PROJ2 PROJ6)</query> 
    <document id="0"> 
    <projectid>2</projectid> 
    <projectname>Redundant Demo Project</projectname> 
    <doctype>Projects</doctype> 
    <summary>||Demo Project</summary> 
    <title>Redundant Demo Project</title> 
    </document> 
    <document id="1"> 
    <projectid>6</projectid> 
    <projectname>Redundant Demo Project2</projectname> 
    <doctype>Projects</doctype> 
    <summary>||Main terminal links.</summary> 
    <title>Terminal 5 Project</title> 
    </document> 
</searchresult> 

코드에 대한 전환율은 다음과 같습니다.

ResponseVO<Projects_Display_VO> resp = (ResponseVO<Projects_Display_VO>) SerializationUtil.deserialize(ResponseVO.class, reader); 

여기에 내가 simpleframework에서 serializer를 사용하고 있습니다. 하지만 다음과 같은 오류가 발생합니다

Exception::Attribute 'id' does not have a match in class java.lang.Object at line 5 
org.simpleframework.xml.core.AttributeException: Attribute 'id' does not have a match in class java.lang.Object at line 5 
at org.simpleframework.xml.core.Composite.readAttribute(Composite.java:555) 
at org.simpleframework.xml.core.Composite.readAttributes(Composite.java:474) 
at org.simpleframework.xml.core.Composite.readSection(Composite.java:387) 

나는 잘못 알고 있습니다. 여기가 잘못되었습니다. 제네릭없이 잘 작동합니다. 미리 감사드립니다.

답변

0

이것은 지움 때문에 발생하며, 런타임시 T를 사용할 수 없습니다. 자바는 그것을 허용하지 않는다.