ObservableList和StringProperty未在xml文件中封送
我想使用Java1.7通过JAXB编写/读取XML文件。 在我的文件中,我使用StringProperty、ObservableList和SimpleObject属性。每个类都有一个xml适配器。 当我尝试整理这些类时,我只得到一个几乎为空的xml文件 ModelDescriptorHelper(存储项目列表,并封送和解封送xml文件) StringPropertyAdapter:ObservableList和StringProperty未在xml文件中封送,xml,jaxb,javafx,observablecollection,Xml,Jaxb,Javafx,Observablecollection,我想使用Java1.7通过JAXB编写/读取XML文件。 在我的文件中,我使用StringProperty、ObservableList和SimpleObject属性。每个类都有一个xml适配器。 当我尝试整理这些类时,我只得到一个几乎为空的xml文件 ModelDescriptorHelper(存储项目列表,并封送和解封送xml文件) StringPropertyAdapter: public class SimpleStringPropertyAdatper extends XmlAdapt
public class SimpleStringPropertyAdatper extends XmlAdapter<String, SimpleStringProperty> {
@Override
public SimpleStringProperty unmarshal(String v) throws Exception {
return new SimpleStringProperty(v);
}
@Override
public String marshal(SimpleStringProperty v) throws Exception {
if(null == v) {
return null;
}
return v.get(); // Or whatever the correct method is
}
创建项目并将数据保存到xml:
ModelDescriptorHelper helper = ModelDescriptorHelper.getInstance(new File ("/test/test.xml"));
Project project = new Project();
project.setProjectName("Test Project");
helper.getProjects().add(project);
helper.getProjects().add(project);
helper.saveData();
marshall之后的Xml文件:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ModelDescriptorHelper>
<projects/>
</ModelDescriptorHelper>
当我调试时,似乎marshaller调用了2倍于ObservableListAdapter的函数。1次列表有2个项目,第二次列表为空
我错了什么
public class ObservableListAdatper<T> extends XmlAdapter<LinkedList<T>, ObservableList<T>> {
@Override
public ObservableList<T> unmarshal(LinkedList<T> v) throws Exception {
return FXCollections.observableList(v);
}
@Override
public LinkedList<T> marshal(ObservableList<T> v) throws Exception {
LinkedList<T> list = new LinkedList();
list.addAll(v);
return list; // Or whatever the correct method is
}
@XmlJavaTypeAdapters({
@XmlJavaTypeAdapter(value=SimpleStringPropertyAdatper.class, type=String.class),
@XmlJavaTypeAdapter(value=ObservableListAdatper.class, type=ObservableList.class)})
package org.project;
import javafx.collections.ObservableList;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters;
ModelDescriptorHelper helper = ModelDescriptorHelper.getInstance(new File ("/test/test.xml"));
Project project = new Project();
project.setProjectName("Test Project");
helper.getProjects().add(project);
helper.getProjects().add(project);
helper.saveData();
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ModelDescriptorHelper>
<projects/>
</ModelDescriptorHelper>