我正在使用JAXB来解压缩xml文件,这些文件可能包含不同的类型,然后是相应的类。这是一个Range类
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "range")
public class Range {
@XmlAttribute
private float min;
@XmlAttribute
private float max;
public float getMin() {
return min;
}
public void setMin(float min) {
this.min = min;
}
public float getMax() {
return max;
}
public void setMax(float max) {
this.max = max;
}
}
和相应的xml文本
<range min="0" max="width"/>
如您所见,最大值不是浮点数而是字符串。我的程序或unmarshaller应该能够处理它,可能通过调用下面的另一个setter方法。这样的事情是可能的。
public void setMax(String max) {
this.max = Constants.getValueOf(max);
}
感谢您的帮助。
答案 0 :(得分:0)
如果您将field
从float
更改为Float
,则可以编写XmlAdapter
来处理此用例。
public class MyAdapter extends XmlAdapter<String, Float> {
// Your logic for converting between the String and Float
}
然后,您可以使用XmlAdapter
注释引用@XmlJavaTypeAdapter
:
@XmlAttribute
@XmlJavaTypeAdapter(MyAdapter.class)
private Float max;