JAXB Marshall&解组Java复杂类

时间:2016-04-07 12:01:41

标签: java jaxb javafx-8 marshalling unmarshalling

我正在Java项目中使用JAXB。

我想用JAXB处理我的数据,但我对这些类有问题。

我应该在字段中添加哪种标签等来进行编组和解组工作?

Wrapper.class

@XmlElement(name="database")
public class Wrapper {

    private List <Person> persons;
    private List <Quote> quotes;

    @XmlElement(name="persons")
    public List<Person> getPersons(){
        return=this.persons;
    }

    @XmlElement(name="quotes")
    public List<Quote> getQuotes(){
        return=this.quotes;
    }    
}

Person.class

@XmlRootElement(name="person")
public class Person {

    private final StringProperty name;
    private final StringProperty telephone;
    private final StringProperty mail;
    private final ObjectProperty<LocalDate> date;
    //I have problem with this complex field:
    private final ObjectProperty<List <Job>> jobs;

    //Constructor getters and setters
    ...
}

Job.class

@XmlRootElement(name="job")
public class Job {

    private final StringProperty roleName;
    private final StringProperty id;
    //I have problem with this complex field too:
    private final ObjectProperty<List <Subrole>> subroles;


    //Constructor getters and setters
    ...
}

Subrole.class

@XmlRootElement(name="subroles")
public class SubRole {
    private final StringProperty subRoleName;
    private final ObjectProperty<List <String>> actions;

    //really don't know how to treat this
    private final ObjectProperty<List<List <Activity>>> activities;

    //Constructor getters and setters
    ...
}

Activity.class

@XmlRootElement(name="activities")
public class Activity{
    private final StringProperty activityName;
    private final FloatProperty salary;
    private final FloatProperty hours;


    //Constructor getters and setters
    ...
}

1 个答案:

答案 0 :(得分:0)

如果您对该主题缺乏了解,并且您使用的是Eclipse,我建议您根据类层次结构创建自己的XSD(XML Schema Definiton)文件(例如,您可以尝试使用Altova XML Spy)。之后,将xsd移动到您的项目并自动在Eclipse中生成JAXB类(右键单击xsd,您将看到generate选项)。

它将生成您的JAXB类,因此您可以检查它们并学习如何管理这些类型的对象。