2012-03-14 54 views
2

我需要反序列化多态类的结果xml。 下面是2个例子。使用简单XML反序列化多态类使用简单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

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并创建DataType1或DataType2的适当对象。

感谢,

图莎尔

+0

您是否想过只需读取XML中的type值并使用switch语句。 – alykhalid 2012-03-14 16:19:31

+0

我的意图是在XML解析完成时生成类DataType1或DataType2的正确对象。当我尝试使用当前类结构解析xml时,出现错误消息 “org.simpleframework.xml.core.ElementException:元素'data1'在类1中没有类com.test.xml.Data中的匹配” – Tushar 2012-03-15 08:50:07

回答

1

正如@alykhalid你应该考虑使用简单的if-else或switch语句的评论称。