在我的项目中,我使用unmarshal来布尔,一切正常。 现在我想处理"是"和"不" (也不仅仅是" true"," false")。
所以为了做到这一点,我试图使用XmlAdapter将String解组为布尔值,但我总是得到我的默认值而不是Xml值(如果我没有给出,则为null它默认)。 我究竟做错了什么?我很安静,确保它并不复杂......
我试图将我的项目简化为这样,所以我的问题很清楚:
我的适配器:
public class BooleanAdapter extends XmlAdapter<String, Boolean> {
@Override
public Boolean unmarshal(String s) throws Exception {
return new Boolean("yes".equalsIgnoreCase(s) || "true".equalsIgnoreCase(s));
}
@Override
public String marshal(Boolean b) throws Exception {
return b.toString();
}
}
我的XmlRootElement:
@XmlRootElement(name = "package")
public class Package {
private Boolean x;
@XmlAttribute(name = "x")
@XmlJavaTypeAdapter(BooleanAdapter.class)
public Boolean isX() {
return x;
}
public void setX(String x){
this.revoked = x;
}
}
我的Xml文件:
<package x="true">
</package>
谢谢! :)