这几天我从 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 上申明很多次?