JAXB unmarshelling返回null

时间:2016-03-29 21:10:21

标签: java xml jaxb unmarshalling

我正在尝试解组我编组的XML文件,但是当我打印它时它会返回null。

XML文件:

<body><div style="border-top:solid black 1px;"><my-app>Loading...</my-app></div>

XML包装器:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<presentieLijst>
<les>
    <begintijd>15:30</begintijd>
    <docent>John Smeets</docent>
    <eindtijd>18:00</eindtijd>
    <lesDatum>2016-02-02</lesDatum>
    <lesNaam>TCIF-V1AUI-15</lesNaam>
    <lokaal>D02.08</lokaal>
</les>
</presentieLijst>

作为ObservableList插入到PresentieLijstWrapper.set中的“Les”类:

@XmlRootElement(name = "presentieLijst")
public class PresentieLijstWrapper {
private Les les;

@XmlElement(name = "les") 
public Les getLes() {
    return les;
}

public void setles(Les lessen) {
    this.les = lessen;
}
}

unmarshel功能:

package presentie.model;

import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;

public class Les {
private final StringProperty lesNaam,
                             lokaal,
                             docent,
                             eindtijd,
                             begintijd,
                             lesDatum;
//private Klas klas;

public Les(){this(null,null,null,null,null,null);}

public Les(String nm, String lok, String doc, String dt, String et, String bt) {
    this.lesNaam   = new SimpleStringProperty(nm);
    this.lokaal    = new SimpleStringProperty(lok);
    this.docent    = new SimpleStringProperty(doc);
    this.begintijd = new SimpleStringProperty(et);
    this.eindtijd  = new SimpleStringProperty(bt);
    this.lesDatum  = new SimpleStringProperty(dt);
    //this.klas = kl;
}

public StringProperty lesNaamProperty()  {return lesNaam;}
public StringProperty lokaalProperty()   {return lokaal;}
public StringProperty docentProperty()   {return docent;}
public StringProperty begintijdProperty(){return begintijd;}
public StringProperty eindtijdProperty() {return eindtijd;}
public StringProperty datumProperty()    {return lesDatum;}

public void setLesNaam(String nm)  {this.lesNaam.set(nm);}
public void setLokaal(String lk)   {this.lokaal.set(lk);}
public void setDocent(String dc)   {this.docent.set(dc);}
public void setBegintijd(String bt){this.begintijd.set(bt);}
public void setEindtijd(String et) {this.eindtijd.set(et);}
public void setLesDatum(String dt) {this.lesDatum.set(dt);}
//public void setKlas(Klas kl) {klas = kl;}

public String getLesNaam()   {return lesNaam.get();}
public String getLokaal()    {return lokaal.get();}
public String getDocent()    {return docent.get();}
public String getBegintijd() {return begintijd.get();}
public String getEindtijd()  {return eindtijd.get();}
public String getLesDatum()  {return lesDatum.get();}
//public Klas getKlas() {return klas;}  
}

我已经查看了许多其他堆栈问题和一些教程。这是我主要关注的那个:http://code.makery.ch/library/javafx-8-tutorial/part5/

1 个答案:

答案 0 :(得分:0)

这就是:

public void setles(Les lessen) { ... }

遵守Java Beans惯例至关重要。如果属性的字段名为 les ,则必须将setter称为 setLes ,并且getter getLes isLes 布尔值。因此:

public void setLes(Les lessen) { ... }