我在网上找不到任何能告诉我如何做到这一点的东西,或者没有遵循我所找到的东西,所以我想我会在这里问。
我有一条要反序列化为 Java 对象的 XML 消息。该消息的格式为:
<billing-amount>
<EUR>100</EUR>
<GBP>12</GBP>
</billing>
该片段来自对我正在尝试集成的支付网关上的 API 请求的响应。节点内的每个<billing-amount>
节点代表一个给定货币的数量。<EUR>
例如,代表欧元。
现在,如果我知道所有可能的货币(嗯,至少是我关心的),我可以创建一个 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
对象在实例化时将有一个字段包含欧元金额,另一个字段包含英镑金额。这一切都很好。
但是,我想知道的是,有没有更好的方法呢?JAXB 中有没有一种方法可以使用节点的名称向您正在创建的类添加属性?或者根据列表中节点的名称创建一个类?
基本上我想要的是根据列表中节点的名称创建类。所以这个BillingAcount
类可能会被替换为一个XmlElementWrapper
,因为创建一个类只是作为一个容器似乎是一种开销。
谢谢。