【问题标题】:Java Xml Unmarshing typecastJava Xml Unmarshing 类型转换
【发布时间】:2013-08-17 20:30:00
【问题描述】:

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

感谢您的帮助。

【问题讨论】:

  • 你运行过这个吗?它应该起作用了。否则,是的,您可以注释设置器而不是字段。

标签: java xml casting unmarshalling


【解决方案1】:

如果您将fieldfloat 更改为Float,您可以编写XmlAdapter 来处理此用例。

public class MyAdapter extends XmlAdapter<String, Float> {
    // Your logic for converting between the String and Float
}

然后你可以使用@XmlJavaTypeAdapter注解来引用XmlAdapter

@XmlAttribute
@XmlJavaTypeAdapter(MyAdapter.class)
private Float   max;

【讨论】:

    猜你喜欢
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多