JAXB-Marshall&;反汇编Java复杂类

JAXB-Marshall&;反汇编Java复杂类,java,jaxb,javafx-8,marshalling,unmarshalling,Java,Jaxb,Javafx 8,Marshalling,Unmarshalling,我在一个Java项目中与JAXB合作 我想用JAXB处理数据,但这些类有问题 我应该向字段中添加什么样的标记等以使编组和解编组工作正常 包装器类 @XmlElement(name="database") public class Wrapper { private List <Person> persons; private List <Quote> quotes; @XmlElement(name="persons") public

我在一个Java项目中与JAXB合作

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

我应该向字段中添加什么样的标记等以使编组和解编组工作正常

包装器类

@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;
    }    
}

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


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

首先,您遇到的确切问题是什么?其次,为什么要将所有类定义为根元素?我想只有一个人应该是根元素。感谢您的快速回复,我不知道如何像这样管理分层的复杂对象。谢谢,目前我正在手动实现用于编组和解编组的适配器和包装器,稍后我会尝试一下
@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
    ...
}
@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
    ...
}
@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
    ...
}
@XmlRootElement(name="activities")
public class Activity{
    private final StringProperty activityName;
    private final FloatProperty salary;
    private final FloatProperty hours;


    //Constructor getters and setters
    ...
}