2010-01-30 75 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(){ ... } 
相關問題