Quiero generar código java desde xsd usando JAXB 2.1 XJC. Tengo un esquema xsd provisto y no puedo cambiarlo. Me gustaría utilizar xjc: modo simple mientras genero clases Java desde el esquema xml.JAXB 2.1 - Personalizar xs: cualquier enlace
En el xsd hay elementos:
<xs:any namespace="##other" processContents="lax"/>
Como se dice aquí: http://jaxb.java.net/guide/Mapping_of__xs_any___.html que esperaba que estos elementos serán encuadernados a:
@XmlAnyElement(lax=true)
public Object any;
pero cuando se utiliza el modo de unión sencilla xjc: simple Tengo:
@XmlAnyElement
protected Element any;
Estaba intentando encontrar una solución, pero en todos lados se dice que xs: any se maneja sin configuración. La única forma de tener xs: cualquier elemento como java.lang.Object es soltar xjc: simple o cambiar processContents a "strict" en xsd. Ninguna de estas opciones es aceptable en este momento para mí, ya que no puedo cambiar el esquema xml y tengo un código heredado que depende de las clases Java generadas con xjc: modo simple, pero ahora necesito usar xs: cualquier elemento y me gustaría evite el uso de objetos org.w3c.dom.Element.
Cualquier ayuda sería muy apreciada. Gracias.
Incluso leí acerca de este complemento, pero no estaba seguro de si esta es la dirección correcta. Gracias por la respuesta. Lo verificaré tan pronto tenga algún tiempo libre en el proyecto. – arek
Gracias lexicore, este complemento es casi lo que necesitaba. Dije casi porque no pude encontrar una manera de cambiar globalmente xs: any a java.lang.Object. Cada situación debe configurarse por separado, lo que es un poco molesto. Solo para el registro de cualquier persona que necesite configurarlo a través de un archivo vinculante (el complemento no cubre este caso), debe apuntar directamente al tipo complejo, por ejemplo: jxb: bindings> –
arek
@Arek Por favor, presente un problema en JAXB2 Basics, this es factible – lexicore