Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ObservableList和StringProperty未在xml文件中封送_Xml_Jaxb_Javafx_Observablecollection - Fatal编程技术网

ObservableList和StringProperty未在xml文件中封送

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

我想使用Java1.7通过JAXB编写/读取XML文件。 在我的文件中,我使用StringProperty、ObservableList和SimpleObject属性。每个类都有一个xml适配器。 当我尝试整理这些类时,我只得到一个几乎为空的xml文件

ModelDescriptorHelper(存储项目列表,并封送和解封送xml文件)

StringPropertyAdapter:

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>