【问题标题】:If a class has @XmlElement property, it cannot have @XmlValue property如果一个类有@XmlElement 属性,它就不能有@XmlValue 属性
【发布时间】:2014-09-23 14:54:39
【问题描述】:

我收到以下错误:

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="priceInclVat") 可以吗?

【问题讨论】:

    标签: java xml jaxb


    【解决方案1】:

    对于错误:

    如果一个类有@XmlElement 属性,它就不能有@XmlValue 属性

    由于您已指定字段访问权限,默认情况下,未注释的 amount 字段被视为具有 @XmlElement

    private double amount;
    

    您可以执行以下操作之一:

    1. @XmlAttribute注释amount
    2. @XmlTransient注释amount
    3. @XmlAccessorType(XmlAccessType.FIELD) 更改为@XmlAccessorType(XmlAccessType.NONE),以便仅将带注释的字段视为已映射。

    我怎样才能做到这一点?如果我有可能吗 @XmlRootElement(name="priceInclVat")?

    您可以将PriceInclVatInfo 的实例包装在JAXBElement 的实例中以覆盖根元素并对其进行编组。

    【讨论】:

    • 谢谢,我用 @XmlAttribute 注释了数量,这解决了我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-12
    • 1970-01-01
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    相关资源
    最近更新 更多