我收到以下错误:
If a class has @XmlElement property, it cannot have @XmlValue property
已更新类:
@XmlType(propOrder={"currencyCode", "amount"})
@XmlRootElement(name="priceInclVat")
@XmlAccessorType(XmlAccessType.FIELD)
public class PriceInclVatInfo {
@XmlAttribute
private String currency;
@XmlValue
private String currencyCode;
private double amount;
public PriceInclVatInfo() {}
public PriceInclVatInfo(String currency, String currencyCode, double amount) {
this.currency = currency;
this.currencyCode = currencyCode;
this.amount = amount;
}
public String getCurrency() {
return currency;
}
public void setCurrency(String currency) {
this.currency = currency;
}
public String getCurrencyCode() {
return currencyCode;
}
public void setCurrencyCode(String currencyCode) {
this.currencyCode = currencyCode;
}
public double getAmount() {
return amount;
}
public void setAmount(double amount) {
this.amount = amount;
}
}
我想使用元素属性和值来实现以下输出:
<currencyCode plaintext="£">GBP</currencyCode>
我怎样才能做到这一点?如果我有@XmlRootElement(name =&#34; priceInclVat&#34;)可能吗?
答案 0 :(得分:13)
对于错误:
如果某个类具有@XmlElement属性,则它不能具有@XmlValue属性
由于您已指定字段访问权限,因此默认情况下,未注释的amount
字段将被视为具有@XmlElement
。
private double amount;
您可以执行以下操作之一:
amount
@XmlAttribute
amount
注释@XmlTransient
。@XmlAccessorType(XmlAccessType.FIELD)
更改为@XmlAccessorType(XmlAccessType.NONE)
,以便仅将带注释的字段视为已映射。我怎样才能做到这一点?如果我有可能的话 @XmlRootElement(名称= “priceInclVat”)?
您可以将PriceInclVatInfo
的实例包装在JAXBElement
的实例中,以覆盖根元素并封送它。