2011-04-04 15 views
6

Tengo un problema con la deserialización java-object. Para la deserialización uso SimpleXML.Error de deserialización SimpleXML en Android

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

I que recibe XML, que tienen siguiente campo:

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

Dalvink lanza excepción siguiente: org.simpleframework.xml.core.AttributeException: Atributo 'nil' no tiene un partido en la clase B en la línea -1

¿Hay alguna idea para la solución? Gracias.

Respuesta

1

se debe añadir a la clase C de una propiedad:

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

significa que C-object es nulo. Pero SimpleXML no entiende esto. Además, este documento XML tiene el campo , D es String. Anoté @Element (required = false) String D. ¡Funciona! –

+0

Para empezar, ni siquiera es XML válido, ¿dónde se declara el espacio de nombres para el prefijo 'i'? La respuesta anterior funcionará, pero también podría leer con Persister.read (A.class, sourceXml, false). Esto ignorará i: nill y no se lanzará ninguna excepción. –

+0

He intentado esto en la última versión y no funciona. He intentado con prefijo, sin prefijo, con definiciones de espacio de nombres. Nada ... Nada no funcionará. – dodsky

1

contenido nulo lo general se presenta con

xsi:nil="true" 

atributo si eso es lo que estamos tratando de hacer aquí.