JAXB-Marshall&;反汇编Java复杂类
我在一个Java项目中与JAXB合作 我想用JAXB处理数据,但这些类有问题 我应该向字段中添加什么样的标记等以使编组和解编组工作正常 包装器类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
@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
...
}