如何使用JAXB执行此操作?

时间:2012-07-30 18:10:43

标签: jaxb

我找不到任何能告诉我如何在网上做到这一点,或者我没有按照我的确找到的东西,所以我想我会在这里问。

我有一条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替换,因为创建一个类只是为了充当容器似乎是一种开销。

感谢。

0 个答案:

没有答案
相关问题