使用Simple XML反序列化多态类

时间:2012-03-14 16:11:38

标签: java xml xml-parsing deserialization

我需要反序列化xml,这是多态类的结果。 以下是2个例子。

示例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类结构是

class Root {
 String  TYPE ;
 Data data;

}

class Data {
}

class DataType1 extends Data{
  data1;
  data2;
}

class DataType2 extends Data{
  data3;
  data4;
}

xml中的Root.TYPE可用于确定xml中的数据是用于DataType1还是DataType2。 XML不为标记提供任何“类”属性。

我在简单的xml中尝试了各种Strategy类但无法使其正常工作。

您是否有任何建议我应该使用哪种策略或其他类,以便在反序列化期间正确解析xml并创建DataType1或DataType2的正确对象。

谢谢,

图莎尔

1 个答案:

答案 0 :(得分:1)

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