这里我有两个类"Student"one_answers"Course":
@XmlRootElement
class Student {
private String name;
private HashMap<String, Course> courses;
public Student() {}
public Student(String name, HashMap<String, Course> courses) {
super();
this.name = name;
this.courses = courses;
}
// -------------------------getters
@XmlAttribute(name="name")
public String getName() {
return name;
}
@XmlElement(name = "course")
public HashMap<String, Course> getCourses() {
return courses;
}
//---------------------------setters
public void setName(String name) {
this.name = name;
}
public void setCourses(HashMap<String, Course> courses) {
this.courses = courses;
}
}
@XmlRootElement
class Course {
private String id;
private String name;
public Course() {}
public Course(String id, String name) {
super();
this.id = id;
this.name = name;
}
@XmlID
@XmlAttribute(name = "id")
public String getId() {
return id;
}
@XmlAttribute(name = "name")
public String getName() {
return name;
}
public void setId(String id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
}
我想使用JaxB注释将Student类序列化为如下内容:
<Student name="David">
<courses>
<Course id="1" name="Fundamentals of Programming"/>
<Course id="2" name="Advanced Programming">
</courses>
</Student>
请注意,我希望Student的courses字段为HashMap,并且在解组序列化对象时使用id作为每个Course的键。
您可以在这个用例中使用XmlAdapter
。XmlAdapter
允许您以编程方式将对象转换为另一种类型,以实现数据编组/数据编组。对于您的用例,您将把HashMap
转换为具有Course
集合的对象的实例。
- http://blog.bdoughan.com/2010/07/xmladapter-jaxbs-secret-weapon.html