2011-04-04 31 views
6

Seri kaldırma ile ilgili bir sorunum var java-object. Serileştirme için SimpleXML kullanıyorum. Ben XML almaAndroid'de SimpleXML serileştirme hatası

@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... 
} 

sonraki alanı var ki:

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

Dalvink sonraki istisna atar: org.simpleframework.xml.core.AttributeException: Özellik sınıf B bir maç yok 'nil' başlangıç ​​noktası

Çözüm için herhangi bir fikir var mı? Teşekkürler.

cevap

1

Eğer C sınıfına bir özellik eklemek gerekir: yani burada yapmaya çalıştığımız buysa

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

, C-nesnesinin boş olduğu anlamına gelir. Ama SimpleXML bunu anlamıyor. Ayrıca bu XML belgesinin alanı , D String'dir. Açıklama ekledim @Element (required = false) Dize D Çalışıyor! –

+0

Bir başlangıç ​​için bu geçerli bir XML bile değil, 'i' öneki için ad alanı nerede bildirildi? Yukarıdaki cevap işe yarayacak, ancak Persister.read (A.class, sourceXml, false) ile de okuyabilirsiniz. Bu i reddeder: nill ve hiçbir istisna atılır. –

+0

Bunu en son sürümde denedim ve çalışmıyor. Önek olmadan ad alanı tanımları ile önek ile denedim. Hiçbir şey ... Hiçbir şey işe yaramaz. – dodsky

1

Genellikle boş içerik

xsi:nil="true" 

özniteliği ile sunulmuştur.