2012-08-08 17 views
1

我得到一個長字符串作爲屬性,並且我想對它的一部分進行解組。
這裏是元素的樣子:JAXB:解組並設置屬性值的一部分

<Party id="PARTYID_1341592540748_ed044bd3-b8b2-40f9-a679-4daa411ecc45"> 

但我只想1341592540748被設置爲ID。
是否可以在飛行中編輯@XmlAttribute字符串?

回答

1

我會建議實施的XmlAdapter實例包含這個邏輯。這種方法的優點是XML轉換邏輯與您的域模型保持分離。使用@XmlJavaTypeAdapter註釋在字段/屬性上設置XmlAdapter

更多信息

1

一種方法可能是在做setter方法的轉換,這樣的事情(未測試):

@XmlRootElement 
@XmlAccessorType(XmlAccessType.FIELD) 
public class Party { 

    @XmlTransient long id; 

    // traditional JavaBean accessors for the long, _not_ used by JAXB 
    public long getId() { return id; } 
    public void setId(long id) { this.id = id; } 

    // converting accessors for JAXB 
    @XmlAttribute(name = "id") 
    public String getStringId() { return String.valueOf(id); } 
    public void setStringId(String idStr) { 
    // extract relevant bit of the string and parse it into a long 
    } 
}