2010-01-30 45 views

回答

4

似乎根本不可能没有新课程。使用XmlAdapter

class EntryAdapter extends XmlAdapter<EntryAdapter.Entry, Integer> 
{ 
    public EntryAdapter.Entry marshal(Integer id) { 
     return new Entry(id); 
    } 

    public Integer unmarshal(Entry e) { 
     return e.getId(); 
    } 

    static class Entry 
    { 
     private Integer id; 

     public Entry() {} 
     public Entry(Integer id) { this.id = id; } 

     @XmlAttribute 
     public Integer getId() { return id; } 
     public void setId(Integer id) { this.id = id; } 
    } 
} 

-

@XmlElement(name="entry") 
@XmlJavaTypeAdapter(EntryAdapter.class) 
public Collection<Integer> getSizes(){ ... } 
2

作为公认的答案说,XmlAdapter是标准JAXB解决方案。

但是,如果您使用EclipseLink MOXy作为JAXB提供程序,并且可以使用其扩展名之一,即@XmlPath,则可以使用它来实现相同的结果。

元帅集合值属性,可以使用这样的:

@XmlPath("entry/@id") 
public Collection<Integer> getSizes(){ ... } 
相关问题