我的 XMLEncoder 有以下问题。我想序列化一个看起来像这样的类:
public class MyClass{
private Object myObject;
private Object anotherObject;
private static MyClass instance = new MyClass();
[myObject and anotherObject are set in the class later...]
public static MyClass getInstance(){
return instance;
}
[getter and setter methods here]
}
现在我想像这样序列化对象(在 MyClass 中):
public void saveObject(){
[try catch stuff not shown]
FileOutputStream fos = new FileOutputStream(new File("object.xml"));
XMLEncoder xmle = new XMLEncoder(fos);
xmle.writeObject(instance);
xmle.close();
}
但是我的 object.xml 不包含 myObject 和 anotherInstance 的值,看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.6.0_24" class="java.beans.XMLDecoder">
<object class="MyClass"/>
</java>
那里发生了什么? XMLEncoder 是否检测到具有同一类的静态字段的循环并且不进一步序列化它?但我没有收到任何错误... 我可以将该字段标记为不可序列化或其他吗?
最佳答案
XMLEncoder编码“Java Beans”。它没有领域的意识;它只使用 getter 和 setter。如果存在“循环”,那么它将使用 xml:id
和 xml:idref
来处理引用。
关于java - XML序列化只序列化一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8617021/