2012-03-14 1 views
2

다형성 클래스의 결과 인 XML을 비 직렬화해야합니다. 다음은 2 가지 예입니다.Simple XML을 사용하여 다형 클래스를 비 직렬화하기

예 1

<Root> 
    <TYPE>TYPE1</TYPE> 
    <Data> 
    <data1>fdfdf</data1> 
    <data2>dfdfdf<data2> 
    </Data> 
</Root> 

예 2

<Root> 
    <TYPE>TYPE2</TYPE> 
    <Data> 
    <data3>fdfdf</data1> 
    <data4>dfdfdf<data2> 
    </Data> 
</Root> 

내 자바 클래스 구조가 XML로

class Root { 
String TYPE ; 
Data data; 

} 

class Data { 
} 

class DataType1 extends Data{ 
    data1; 
    data2; 
} 

class DataType2 extends Data{ 
    data3; 
    data4; 
} 

Root.TYPE 데이터의 여부를 결정하기 위해 사용될 수있다 xml은 DataType1 또는 DataType2 용입니다. XML은 태그에 "클래스"속성을 제공하지 않습니다.

간단한 xml에서 다양한 Strategy 클래스를 시도했지만 작동하지 못했습니다.

XML을 올바르게 구문 분석하고 deserialization 중에 DataType1 또는 DataType2의 적절한 개체를 만들 수 있도록 how/which 전략이나 다른 클래스를 사용해야한다는 제안이 있습니까?

감사합니다,

Tushar

+0

간단히 XML 형식의 값을 읽고 switch 문을 사용하는 것에 대해 생각해 보았습니다. – alykhalid

+0

제 생각은 XML 구문 분석이 완료되면 DataType1 또는 DataType2 클래스의 올바른 개체를 생성하는 것입니다. 현재 클래스 구조로 XML을 구문 분석하려고하면 오류 메시지가 나타납니다. "org.simpleframework.xml.core.ElementException : 요소 'data1'이 com.test.xml.Data 클래스의 1 행에서 일치하지 않습니다." – Tushar

답변

1

@alykhalid 당신이 경우 - 다른 사람 또는 스위치 문 간단한 사용하는 것이 좋습니다 주석에 말했듯이.

관련 문제