簡單的圖書館是偉大的,我已經解析了很多 不同的XML從肥皂服務器以來3天,但我遇到 布爾屬性與「0」或「1 「:簡單的圖書館Android:布爾在「1」或「0」
<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;
}
}
但我仍然得到每個布爾值爲false。
[edit]
事實上,當我這樣做:
@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())
{
//this never happens
}else{
//this is always the case
}
,所以我的轉換器有沒有影響?
另外:如何我可以將轉換器附加到Persister而不是 在@Attributes上聲明它一百次?
非常感謝提前!
[edit2]
我放棄與轉換器,這是我自己的解決方案:
@Root(name="list")
public class ListFcts
{
@Attribute
private int mybool1;
@Attribute
private int mybool2;
public int getMybool1() {
return mybool1;
}
public Boolean isMybool1() {
return (mybool1==1)?true:false;
}
...
}
我剛剛檢查了新值爲「0」和「1」的新布爾(字符串)和布爾值的行爲(字符串)......它不解析這些。按照上面的方法來解決這個問題。 –
getAttribute(「mybool1」)是最糟糕的,因爲它們中有很多... – Darkendorf
或者我可以使用switch語句? – Darkendorf