gpt4 book ai didi

java - JAXB 中的一个 @XmlAttribute 需要两个 @XmlJavaTypeAdapter?

转载 作者:行者123 更新时间:2023-11-30 05:02:20 26 4
gpt4 key购买 nike

我有一堂这样的课:

@XmlRootElement(name = "PricingGroup")
public class PricingGroup {

...

@XmlAttribute(name = "partyName")
@XmlJavaTypeAdapter(CustomerGroupRelationships.Adapter.class)
private List<BilltoCustomer> billtoCustomers = new ArrayList<BilltoCustomer>();

@XmlAttribute(name = "partyName")
@XmlJavaTypeAdapter(PartyNames.Adapter.class)
private PartyName partyName;

...
}

JAXB 似乎无法为一个属性(此处为 partyName)映射两个 @XmlJavaTypeAdapter。如果我注释掉 billtoCustomers 上的注释或 partyName 上的注释,则可以毫无问题地从 XML 读取另一个成员变量。

如何同时获取这两个值?

最佳答案

您可以映射其中一个属性 (partyName),然后使用 afterUnmarshal 事件派生另一个属性 (billToCustomers):

@XmlRootElement(name = "PricingGroup")
public class PricingGroup {

...

@XmlTransient
private List<BilltoCustomer> billtoCustomers = new ArrayList<BilltoCustomer>();

@XmlAttribute(name = "partyName")
@XmlJavaTypeAdapter(PartyNames.Adapter.class)
private PartyName partyName;


void afterUnmarshal(Unmarshaller u, Object parent) {
// Derive billToCustomers from partyName
}

...
}

关于java - JAXB 中的一个 @XmlAttribute 需要两个 @XmlJavaTypeAdapter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6253775/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com