最佳实践:的Java / XML序列化:如何确定反序列化什么课?

我有保存它的上下文XML的应用程序。 在本申请中,存在的一个类层次,即所有实现一个共同的接口,以及代表不同的设置。 例如,第一设定类可以由4个公共浮字段,另一个可以由唯一的HashMap的。

我试图确定什么是处理写入和读取为XML的通用方式的最佳途径。 我在这个网站看了很多关于JAXB及XStream的实例,它们能够从XML做具体的类实例。

不过,我的问题是有关的事实,实际的类可以是任何实现给定的接口。 当你读XML文件,你会如何猜测实际的类从XML数据实例? 你怎么做,在你的应用程序?

我认为我可以在一个XML属性写的.class名字,读它,并将它与所有可能的类的.class名字,直到我找到一个匹配。 是否有一个更明智的方法是什么?

谢谢

--------------解决方案-------------

在我来说,我只是有一种头的存储类名是序列化,当反序列化,我只是用头值找出哪个类应我反序列化值。

xstream应该已经照顾这创造正确类型的对象。

本教程似乎证实:

为了重建一个对象,单纯从XML:

Person newJoe = (Person)xstream.fromXML(xml);

如果你不知道类型,你就必须首先将其分配给普通接口类型:

CommonInterface newObject = (CommonInterface)xstream.fromXML(xml);
// now you can either check its type or call virtual methods

最好的做法会使用一个既定的,有据可查的XML解析器/映射器。 所有序列化/反序列化的工作已经完成,所以你可以不用担心你的业务逻辑来代替。 Castor和Apache的公理是,我已经使用编组/解组(序列化/反序列化)的Java类和XML两种API。
http://www.castor.org

Apache的公理

分类:java的 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.483 (s). 10 q(s)