如何将XML文件反序列化为自己的唯一类?

时间:2013-07-08 19:53:40

标签: java polymorphism xstream xml-deserialization

我有一个包含Vehicle数组的XML文件,但是我需要能够对其进行反序列化并将每个对象放入其自己的Vehicle中。

例如,这就是我的XML文件的样子:

<Vehicle-array>
   <Car></Car>
   <Truck></Truck>
   <Van></Van>
</Vehicle-array>

所以我需要能够将Car元素反序列化为Car对象而不是Vehicle对象。

我可以获得Vehicle[]的所有内容,每个元素都是特定的Vehicle类型。

3 个答案:

答案 0 :(得分:1)

将它们全部放入车辆阵列中,然后使用instanceof

进行投射
if(a instanceof Car)
    a = (Car) a ;
else if(a instanceof Truck)
    ...

答案 1 :(得分:0)

您可以使用JAXB,但这需要您拥有XML架构。从那里,您可以运行xjc从模式生成Java类,然后使用MarshallerUnmarshaller接口从XML构建对象。

答案 2 :(得分:0)

我认为您需要创建类,并使用注释@XStreamAlias注释所有类,如下所示:

@XStreamAlias("Car")
class Car { }

@XStreamAlias("Truck")
class Truck { }

大部分信息都可以在the documentation中找到。我建议先创建类,然后序列化为XML,这样就可以更容易地进行映射。