Java Xml Unmarshing类型转换

时间:2013-08-15 15:40:06

标签: java xml casting unmarshalling

我正在使用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);
}

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

如果您将fieldfloat更改为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;