【问题标题】:XML file from serialized class is missing field data序列化类中的 XML 文件缺少字段数据
【发布时间】:2012-02-17 19:15:37
【问题描述】:

我有一些存在的类是“INI”文件,它们可以工作。我刚刚写了一个新的序列化类,但 XML 文件没有数据字段——它只是一个外壳。我做错了什么?我正在使用 Eclipse 和 Ubuntu 11.10。 班级:

public final class ProsilicaCamInit extends SerialXMLIO {
public boolean isMaster;
public boolean isSlave;
public int filter;
public int exposureTime;

public ProsilicaCamInit() {
}
public void setDefaultValues() {
    isMaster = false;
    isSlave = false;
    filter = 0;
    exposureTime = 5000;
}


public boolean getIsMaster() {
    return isMaster;
}

public void setIsMaster(boolean isMaster) {
    this.isMaster = isMaster;
}

public boolean getIsSlave() {
    return isSlave;
}

public void setIsSlave(boolean isSlave) {
    this.isSlave = isSlave;
}

public int getFilter() {
    return filter;
}

public void setFilter(int filter) {
    this.filter = filter;
}

public int getExposureTime() {
    return exposureTime;
}

public void setExposureTime(int exposureTime) {
    this.exposureTime = exposureTime;
}

}

这里用过

ProsilicaCamInit pci = new ProsilicaCamInit();
pci.setDefaultValues();
pci.serialize(pathName);

我检查了是否设置了默认值,这是只有一个字段的 XML 文件。

<?xml version="1.0" encoding="UTF-8"?>
<java version="1.6.0_23" class="java.beans.XMLDecoder">
 <object class="fireScience.airborne.io.ProsilicaCamInit">
  <void property="exposureTime">
   <int>5000</int>
  </void>
 </object>
</java>

【问题讨论】:

  • 我们能看到SerialXMLIO中的serialize()方法吗?

标签: java xmlserializer


【解决方案1】:

我认为其他值不需要存储,因为 false 是 boolean 的默认值,而零是 int 的默认值。

【讨论】:

  • 是的,这很好。来自 XMLEncoder 的文档:结构紧凑:XMLEncoder 类在内部使用冗余消除算法,因此 Bean 属性的默认值不会写入流中。
  • 知道这很简单。我使用了 XML 文件,因此用户实际上可以读取一个文件。我可能需要重新考虑这些领域。
猜你喜欢
  • 2011-01-17
  • 1970-01-01
  • 1970-01-01
  • 2017-05-19
  • 2016-06-17
  • 1970-01-01
  • 2011-08-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多