ウェブ上でこれを行う方法を詳しく説明しているものが見つからないか、見つけたものに従っていないので、ここで質問しようと思いました。
Java オブジェクトにデシリアライズしたい XML メッセージがあります。メッセージの形式は次のとおりです。
<billing-amount>
<EUR>100</EUR>
<GBP>12</GBP>
</billing>
スニペットは、統合しようとしている支払いゲートウェイの API 要求への応答からのものです。ノード内の各ノード<billing-amount>
は、特定の通貨の金額を表します。<EUR>
たとえば、 はユーロを表します。
ここで、考えられるすべての通貨 (まあ、少なくとも私が気にかけているもの) を知っていれば、考えられる通貨ごとに 1 つずつ、次のフィールドを持つ Java クラスを作成できます。
public class BillingAmount {
@XmlElement(name = "EUR")
@XmlValue
private Integer euroAmount
@XmlElement(name = "EUR")
@XmlValue
private Integer euroAmount
...
}
次に、この新しいクラスを次のように使用して、XML メッセージから作成される実際のクラスのフィールドにします。
@XmlElement(name = "billing-amount")
private BillingAmount billingAmount;
billingAMount
オブジェクトは、インスタンス化されると、ユーロの金額を含む 1 つのフィールドと、GBP の金額を含む別のフィールドを持ちます。これはすべて良いことです。
しかし、私が知りたいのは、これを行うより良い方法はありますか? JAXB でノードの名前を使用して、作成中のクラスにプロパティを追加する方法はありますか? または、リスト内のノードの名前に基づいてクラスを作成しますか?
基本的に、リスト内のノードの名前に基づいてクラスを作成したいと考えています。したがって、コンテナとして機能するためだけにクラスを作成するのはオーバーヘッドBillingAcount
のように見えるため、クラスを に置き換えることができます。XmlElementWrapper
ありがとう。