gpt4 book ai didi

java - Java 中对象 XML 序列化的最佳方法

转载 作者:行者123 更新时间:2023-12-01 19:24:43 25 4
gpt4 key购买 nike

我正在编写服务来在我们的应用程序中实现审核,其中用户可以在任何修改之前和之后查看特定实体的状态,并且还应该能够将其回滚。我们决定将 XML 序列化对象存储在数据库中的 XML_TYPE 列中。

我是序列化新手,我不知道如何实现相同的效果,需要对要序列化的对象进行任何更改,或者我们是否需要任何映射 XML。有人可以推荐一些好的库吗,我知道市场上有很多可用的库,例如 JAXB、JIBX、JABX、XStream 等。哪个好以及如何使用它。

非常感谢任何帮助。

问候,拉维。

最佳答案

当然,对于实体来说最好的是拥有 POJO(普通旧 Java 对象)。没有奇怪的属性、引用或方法。它简化了序列化,并使模型对象与框架和奇怪的层(如持久性、UI、远程访问等)保持中立。

XStream:简单

我建议使用 XStream 库进行序列化。它试图成为将对象序列化和反序列化为 XML 的最简单方法。

你应该这样思考序列化:

  • 指出该对象是什么类
  • 尝试序列化每个属性

所以,这是序列化中要解决的两个问题。 XStream 允许您创建序列化程序(XStream 类),(可选)指示每个类使用什么标记名称,并且(可选)指示属性的别名。

所以如果你有类似的东西:

package pack;

Person
+ mom: Person
+ dad: Person

它将在没有配置的情况下写入:

<pack.Person>
<mom>
<pack.Person>
...
</pack.Person>
</mom>
<dad>
<pack.Person>
...
</pack.Person>
</dad>
</pack.Person>

但是如果你告诉它映射 package.Person 到它将会使用该标签。你可以告诉它把属性“mom”写成“mother”等等。

XStream xs = new XStream();
xs.alias("person", Person.class);
xs.aliasAttribute(Person.class, "mom", "mother");

引用文献

XStream 还可以让您指出您想要的引用类型:

  • 无引用:序列化对象每次它在对象中找到它时树
  • 绝对引用:第二次找到一个对象,它保存一个使用绝对路径引用第一个实例(/人/人[4]/老师)
  • 相对引用:相同,但是使用来自 this 的相对引用点(../../人[4]/老师)

关于java - Java 中对象 XML 序列化的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1973829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com