que tengo un archivo XML:JAXB: ¿Cómo se puede deserializar XML sin espacios de nombres
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<object>
<str>the type</str>
<bool type="boolean">true</bool>
</object>
Y quiero deserializar a un objeto de la clase a continuación
@XmlRootElement(name="object")
public class Spec {
public String str;
public Object bool;
}
¿Cómo puedo hacer esto ? A menos que especifique espacios de nombres (ver a continuación), no funciona.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<object>
<str>the type</str>
<bool xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xsi:type="xs:boolean">true</bool>
</object>
Gracias por su respuesta, Blaise. Estoy bien con tener los espacios de nombres. Pero, ¿es posible no tener espacios de nombres en el XML (porque se enfrentará a usuarios dev) pero mantener esa información con las anotaciones de la clase Java, para que cuando jaxb analice el XML, vea "tipo" y sepa "aha, es del espacio de nombres 'xsi' según la declaración de clase Java ". Lo mismo con "xs: boolean". ¿Ves lo que estoy diciendo? O todavía no es posible? Necesito esto porque nuestros usuarios dev van a crear tales declaraciones XML y tenemos que desmarcarlas en Java. – Andrey
@Andrey - Puede hacer que esto funcione, a continuación se muestra un enfoque que podría utilizar para el unmarshal. –
Hola Blaise. La eliminación de un espacio de nombres para el atributo "tipo" funcionó muy bien, GRACIAS MUCHO !!!, pero igual cómo puedo eliminar la declaración de espacio de nombres "xs" para el valor del atributo "tipo" - "xs: booleano". Jugué con la anulación de algunos de los métodos de StreamReaderDelegate, pero no tuve éxito. – Andrey