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)
나는 잘못 알고 있습니다. 여기가 잘못되었습니다. 제네릭없이 잘 작동합니다. 미리 감사드립니다.