我有一个包含车辆数组的 XML 文件,但我需要能够反序列化它并获取每个对象并将其放入自己的车辆中。
例如,这就是我的 XML 文件的样子:
<Vehicle-array>
<Car></Car>
<Truck></Truck>
<Van></Van>
</Vehicle-array>
所以我需要能够将 Car 元素反序列化为 Car 对象而不是Vehicle
对象。
我可以得到所有的东西Vehicle[]
,每个元素都是一个特定的Vehicle
类型。
我有一个包含车辆数组的 XML 文件,但我需要能够反序列化它并获取每个对象并将其放入自己的车辆中。
例如,这就是我的 XML 文件的样子:
<Vehicle-array>
<Car></Car>
<Truck></Truck>
<Van></Van>
</Vehicle-array>
所以我需要能够将 Car 元素反序列化为 Car 对象而不是Vehicle
对象。
我可以得到所有的东西Vehicle[]
,每个元素都是一个特定的Vehicle
类型。
将它们全部放在 Vehicle Array 中,然后使用 instanceof 进行投射
if(a instanceof Car)
a = (Car) a ;
else if(a instanceof Truck)
...
您可以使用 JAXB,但这需要您有一个 XML 模式。从那里您可以运行xjc
以从模式生成 Java 类,然后使用Marshaller
和Unmarshaller
接口从 XML 构建对象。
我认为您需要创建类,并使用注释 @XStreamAlias 注释所有类,如下所示:
@XStreamAlias("Car")
class Car { }
@XStreamAlias("Truck")
class Truck { }
大多数信息都可以在文档中找到。我建议先创建类,然后序列化为 XML,这样更容易进行映射。