JAXB:Unmarshal并设置属性值的一部分

时间:2012-08-08 13:07:59

标签: xml jaxb eclipselink moxy

我得到一个长字符串作为属性,我想解组它的一部分。
这是元素的样子:

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

但我想将1341592540748设为id 是否可以动态编辑@XmlAttribute字符串?

2 个答案:

答案 0 :(得分: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
  }
}

答案 1 :(得分:1)

我建议实现XmlAdapter的实例以包含此逻辑。这种方法的优点是XML转换逻辑与您的域模型保持独立。使用XmlAdapter注释在字段/属性上设置@XmlJavaTypeAdapter

了解更多信息