2011-04-04 96 views
6

我有反序列化Java對象的問題。對於反序列化,我使用SimpleXMLAndroid中的SimpleXML反序列化錯誤

@Root 
public class A { 
    @ElementList 
    private ArrayList<B> b; 

    getters, setters... 
} 


public class B{ 
    @Element(name="C", required=false) 
    private C c; 

    getters, setters... 
} 

public class C{ 
    private int id; 
    private String name; 

    getters, setters... 
} 

我接收XML,其具有下一個字段:

<A> 
    <B> 
     <C i:nil="true" /> 
    </B> 
</A> 

Dalvink拋出下一個異常:org.simpleframework.xml.core.AttributeException:屬性 '零' 不具有類B中的匹配在線-1

有解決方案的任何想法? 謝謝。

回答

1

你應該添加到您的C類的屬性:

@Attribute(name = "i:nil") 
boolean myProperty; 
+0

表示C對象爲空。但SimpleXML不理解這一點。這個XML文檔還有字段,D是字符串。我註釋了@Element(必需= false)字符串D.它的工作原理! – 2011-04-04 10:47:58

+0

首先,這甚至不是有效的XML,其中是'i'前綴的名稱空間聲明?上面的答案是可行的,但你也可以用Persister.read(A.class,sourceXml,false)閱讀。這將忽略i:nill並且不會拋出異常。 – 2011-05-24 23:22:17

+0

我試過這個在最新版本,它不工作。我試着用前綴,沒有前綴,命名空間定義。沒有什麼......沒有什麼不行的。 – dodsky 2012-07-22 22:33:53

1

通常空的內容呈現

xsi:nil="true" 

屬性,如果這就是你想在這裏做什麼。