属性として長い文字列を取得していますが、その一部をアンマーシャリングしたいと思います。
要素は次のようになります。
<Party id="PARTYID_1341592540748_ed044bd3-b8b2-40f9-a679-4daa411ecc45">
1341592540748
しかし、私はidとして設定したいだけです。
@XmlAttribute文字列をその場で編集することは可能ですか?
属性として長い文字列を取得していますが、その一部をアンマーシャリングしたいと思います。
要素は次のようになります。
<Party id="PARTYID_1341592540748_ed044bd3-b8b2-40f9-a679-4daa411ecc45">
1341592540748
しかし、私はidとして設定したいだけです。
@XmlAttribute文字列をその場で編集することは可能ですか?
1つのアプローチは、次のようなセッターメソッドで変換を行うことです(テストされていません)。
@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
}
}
XmlAdapter
このロジックを含めるためにのインスタンスを実装することをお勧めします。このアプローチの利点は、XML変換ロジックがドメインモデルから分離されていることです。アノテーションXmlAdapter
を使用してフィールド/プロパティに設定されます。@XmlJavaTypeAdapter
詳細については