2011-04-04 25 views
6

में SimpleXML deserialization त्रुटि मुझे deserialization जावा-ऑब्जेक्ट में समस्या है। Deserialization के लिए मैं 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... 
} 

मैं एक्सएमएल, प्राप्त करने के लिए अगले क्षेत्र है जो: वर्ग बी में एक मैच भी नहीं है 'शून्य' विशेषता:

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

Dalvink अगले अपवाद फेंकता है: org.simpleframework.xml.core.AttributeException लाइन -1

समाधान के लिए कोई विचार हैं? धन्यवाद।

उत्तर

1

आप अपनी सी क्लास में कोई प्रॉपर्टी जोड़ते चाहिए: कि अगर आप यहाँ करने के लिए कोशिश कर रहे हैं क्या

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

<सी i: nil = "true" /> का अर्थ है कि सी-ऑब्जेक्ट शून्य है। लेकिन SimpleXML इसे समझ में नहीं आता है। इसके अलावा इस एक्सएमएल-दस्तावेज़ में फ़ील्ड <डी i: nil = "true" /> है, डी स्ट्रिंग है। मैंने @ एलीमेंट (आवश्यक = झूठी) स्ट्रिंग डी की टिप्पणी की। यह काम करता है! –

+0

शुरुआत के लिए यह मान्य एक्सएमएल भी नहीं है, 'i' उपसर्ग के लिए नामस्थान कहां घोषित किया गया है? उपर्युक्त उत्तर काम करेगा, लेकिन आप Persister.read (A.class, sourceXml, false) के साथ भी पढ़ सकते हैं। यह मुझे अनदेखा करेगा: शून्य और कोई अपवाद नहीं फेंक दिया जाएगा। –

+0

मैंने इसे नवीनतम संस्करण में आजमाया है और यह काम नहीं करता है। मैंने उपसर्ग के बिना उपसर्ग के साथ, नेमस्पेस परिभाषाओं के साथ प्रयास किया है। कुछ भी नहीं ... कुछ भी काम नहीं करेगा। – dodsky

1

आमतौर पर अशक्त सामग्री के साथ

xsi:nil="true" 

विशेषता प्रस्तुत किया है।