1

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

我有一条要反序列化为 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,因为创建一个类只是作为一个容器似乎是一种开销。

谢谢。

4

0 回答 0