2012-03-14 5 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> 

マイJavaクラス構造は、XMLでRoot.TYPEがデータかどうかを決定するために使用することができる

class Root { 
String TYPE ; 
Data data; 

} 

class Data { 
} 

class DataType1 extends Data{ 
    data1; 
    data2; 
} 

class DataType2 extends Data{ 
    data3; 
    data4; 
} 

ありますxmlはDataType1またはDataType2のためのものです。 XMLではタグの「クラス」属性は提供されません。

シンプルなxmlから様々なStrategyクラスを試していましたが、うまく動作しませんでした。

XMLを正しく解析して、デシリアライズ時にDataType1またはDataType2の適切なオブジェクトを作成できるように、どのような戦略やその他のクラスを使用すべきか提案はありますか? @alykhalidとして

おかげで、

Tushar

+0

単純にXMLのtypeの値を読み、switch文を使用することについて考えましたか? – alykhalid

+0

私の意図は、XMLの解析が完了したときにDataType1クラスまたはDataType2クラスの正しいオブジェクトを生成することです。現在のクラス構造でxmlを解析しようとすると、エラーメッセージが表示されます "org.simpleframework.xml.core.ElementException:要素 'data1'がcom.test.xml.Data行の1行目で一致しません" – Tushar

答えて

1

は、あなたが簡単なのif-elseまたはスイッチステートメントを使用するために検討すべきであるコメントで述べています。

関連する問題