我用 JAXB 创建 XML,我想在标签内放双:
@XmlElement(name = "TaxFree")
private double taxFreeValue;
当我setTaxFreeValue(4.5);
在标签中设置值时显示<TaxFree>4.5<TaxFree>
在 JAXB 中是否有可能在 <TaxFree>4.500<TaxFree>
不将 double 传输到字符串的情况下获得这个?
您可以使用 anXmlAdapter
从双精度值转换为所需的文本(字符串)表示。
最简单的方法是这样
double taxFreeValue;
@XmlElement(name = "TaxFree")
private String getTaxFree() {
return String.format("%.3f", taxFreeValue);
}
请注意,您可以给此方法起任何名称,并将其设为私有 JAXB 不在乎,只要存在注释。
我发现最干净的方法是使用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;