2 csh 34 csh_34 于 2013.04.18 10:38 提问

android中简单的库:Boolean 是“1”还是“0”

这几天我从 soap 服务器中解析了很多不同的XML,但是遇到 boolean 属性是"0" 或者 "1" :

<list mybool1="0" mybool2="1" attr1="attr" attr2="attr">
    <page mybool3="1">
        ...
    </page>
    <page mybool3="0">
        ...
    </page>
    ...
</list>

我创建了下面的类:

public class Boolean01Converter implements Converter<Boolean>
{
    @Override
    public Boolean read(InputNode node) throws Exception {
        return new Boolean(node.getValue().equals("1"));
    }
    @Override
    public void write(OutputNode node, Boolean value) throws Exception {
        node.setValue(value.booleanValue()?"1":"0");
    }
}

在对象定义上实现:

@Root(name="list")
public class ListFcts
{
    @Attribute
    @Convert(Boolean01Converter.class)
    private Boolean mybool1;

    @Attribute
    @Convert(Boolean01Converter.class)
    private Boolean mybool2;

    @Attribute
    private int ...

    @ElementList(name="page", inline=true)
    private List<Page> pages;

    public Boolean getMybool1() {
        return mybool1;
    }
}

但是对于每一 boolean 值还是获得错误的值。
补充一下:
当我用这些代码时:

@Override
public Boolean read(InputNode node) throws Exception {
    return true;
}

依然获得 false:

Serializer serial = new Persister();
ListFcts listFct = serial.read(ListFcts.class, soapResult);
if(listFct.getMybool1())
{
    //永远不会发生
}else{
    //总是如此
}

因此 Converter 没有影响。
如何把转换器放到 Persister,而不用在 @Attributes 上申明很多次?

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!