7

我用 JAXB 创建 XML,我想在标签内放双:

@XmlElement(name = "TaxFree")
private double taxFreeValue;

当我setTaxFreeValue(4.5);在标签中设置值时显示<TaxFree>4.5<TaxFree>

在 JAXB 中是否有可能在 <TaxFree>4.500<TaxFree>不将 double 传输到字符串的情况下获得这个?

4

3 回答 3

4

您可以使用 anXmlAdapter从双精度值转换为所需的文本(字符串)表示。

于 2013-05-07T23:48:09.333 回答
4

最简单的方法是这样

double taxFreeValue;

@XmlElement(name = "TaxFree")
private String getTaxFree() {
    return String.format("%.3f", taxFreeValue);
}

请注意,您可以给此方法起任何名称,并将其设为私有 JAXB 不在乎,只要存在注释。

于 2013-05-08T03:01:50.620 回答
1

我发现最干净的方法是使用XMLAdapter. 创建一个DoubleAdapter类:

public class DoubleAdapter extends XmlAdapter<String, Double> {
    @Override
    public Double unmarshal(String v) throws Exception {
        if (v == null || v.isEmpty() || v.equals("null")) {
            return null;
        }
        return Double.parseDouble(v);
    }

    @Override
    public String marshal(Double v) throws Exception {
        if (v == null) {
            return null;
        }
        //Edit the format to your needs
        return String.format("%.3f", v);
    }
}

要使用它,只需添加注释。

@XmlElement(name = "TaxFree")
@XmlJavaTypeAdapter(DoubleAdapter.class)
private double taxFreeValue;
于 2020-10-09T16:36:28.767 回答