2012-04-21 21 views

Respuesta

21

Estoy bastante seguro de que puede sortear el mapeo estricto reemplazando su declaración @Root con @Root(strict=false), que eliminará el requisito de que cada elemento debe coincidir con un campo en su definición de clase. Más precisamente, de la documentación:

Esto se utiliza para determinar si el objeto representado debe ser analizado de manera estricta. El análisis estricto requiere que cada elemento y el atributo en el documento XML coincida con un campo en el esquema de clase. Si un elemento o atributo no coincide con un campo, el análisis falla con una excepción. Establecer el análisis estricto como falso permite detalles dentro del documento XML de origen que se omiten durante la deserialización .

También hay an example en la lista de tutoriales en el sitio del proyecto Simple XML.

+0

MH, de la información que me diste, yo terminó estableciendo el Parm 'mapeo floja' al hacer la lectura: serializer.read (Class1.class, fuente, false). Gracias por la ayuda. – Alex

1

Puede especificar que se deshabilite el modo estricto para todas las etiquetas para un read en particular agregando "falso" como último parámetro. También de their documentation:

En caso de que exista más de un objeto que requiera mapeo libre, la utilización de la anotación Root podría no ser la solución ideal. En tal escenario, se le puede pedir al propio servidor que realice un mapeo libre. Simplemente pase un booleano al método de lectura que indica el tipo de mapeo requerido. De manera predeterminada, la persistencia utiliza una asignación estricta, que se puede anular en base a un objeto por objeto usando la anotación raíz, como se muestra en el ejemplo anterior. Sin embargo, este valor predeterminado se puede anular como se puede ver en el fragmento de código a continuación.

Contact contact = serializer.read(Contact.class, source, false); 
Cuestiones relacionadas