每次我搜索有关如何序列化为 XML 的内容时,我都会找到 bean 序列化程序。似乎所有东西都必须被声明为财产,这违背了我的目的。我想在 XML 中序列化复杂的层次结构(当然,直到它们到达原语),从(比如)一个 Dictionary 或 List 作为父对象开始。
自动 XML 序列化有哪些选项?
我从 2004 年发现了一些对 JAXB 的引用,这仍然是要走的路吗?
每次我搜索有关如何序列化为 XML 的内容时,我都会找到 bean 序列化程序。似乎所有东西都必须被声明为财产,这违背了我的目的。我想在 XML 中序列化复杂的层次结构(当然,直到它们到达原语),从(比如)一个 Dictionary 或 List 作为父对象开始。
自动 XML 序列化有哪些选项?
我从 2004 年发现了一些对 JAXB 的引用,这仍然是要走的路吗?
试试XStream库。它可以轻松地序列化您可以扔给它的任何复杂对象层次结构。
我在 JAXB 方面取得了很大的成功,尤其是在 NetBeans 中使用对它的支持时。我知道它支持列表的事实。我没有用地图尝试过,但我怀疑它有效。如果不出意外,只需制作一个包含列表的简单 bean 并将其作为序列化 bean。
您可以使用标准java.bean.XMLEncoder
/Decoder
类来序列化集合,因为该机制允许通过 XML 调用方法。输出类似于:
<object class="java.util.ArrayList">
<void method="add">
<string>Hello</string>
</void>
<void method="add">
<string>World</string>
</void>
</object>
这当然有弱点;例如,您不能轻松地序列化 aCollections.emptyXXXX()
但有一些变通方法。但是因为一切都根据类的公开支持的 API进行,所以持久的 XML 表单对模式更改具有弹性。
我发现它是一种非常有用的 Java 对象持久性机制。