我找不到任何能告诉我如何在网上做到这一点,或者我没有按照我的确找到的东西,所以我想我会在这里问。
我有一条XML消息,我想要反序列化为Java对象。消息的格式为:
<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
替换,因为创建一个类只是为了充当容器似乎是一种开销。
感谢。