2013-05-11 41 views
1

这里我有两个班“学生”和“课程”:序列化的HashMap就像一个集合属性

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

请注意,我希望学生的课程字段是HashMap,并且在编组序列化对象时使用ID作为每个课程的关键字。

回答