我目前正在使用默认的Java序列化机制来序列化我的Java实例。我想切换到另一种独立于Java版本的格式。我考虑过使用JAXB,但我想我遇到了重复的问题。具体来说,请考虑以下内容:
A a = new A();
B b = new B();
C c = new C();
a.c = c;
b.c = c;如果我使用默认的Java序列化机制来序列化a和b,我最终只会得到一个c实例。JAXB会序列化两次(除非我弄错了,请纠正我)。
这里对我来说最好的选择是什么?有没有其他方法可以将已经序列化的实例转换为XML?
发布于 2013-11-20 06:21:38
您可以编写自己的序列化程序/反序列化程序。但是要达到您想要的效果,就必须在c中将每个c的状态保持为XML。
您可以在对象中实现getXml()方法,如下所示
Node getXml() {
if( this.nodeCache == null )
... create nodeCache node from c ...
return this.nodeCache;
}要构建XML,需要将每个子对象作为节点请求,并将其链接到最终的DOM树中。然后将DOM写入磁盘。
这里的复杂之处在于,当节点缓存变脏时,要在应用程序中找到正确的位置。我不知道周围是否有自动序列化程序支持你这样做。
发布于 2015-07-24 04:40:39
“简单XML序列化”项目
查看Simple XML Serialization项目。这确实是一种非常简单方法,可以将对象的数据写出到存储中,如果需要,稍后再将数据重新合并到对象中。
比JAXB简单得多。通过查看文档中的示例,您可以在几分钟内开始。" simple“适用于不需要JAXB的所有特性和灵活性的简单情况。
在使用这个可靠的库时,我唯一的挫败感是它的特定名称给谷歌带来的困难。
https://stackoverflow.com/questions/20083179
复制相似问题