online generate from java schema xsd jaxb

generate - xsd to java online



¿Es posible usar JAXB para mapear desde un esquema a un java.util.Map? (2)

Tengo un esquema XML existente que contiene un tipo que me gustaría asignar a un mapa de Java de algún tipo con JAXB. Mi proceso de construcción toma el esquema y crea los beans. Me gustaría personalizar este proceso teniendo uno de los complexTypes en mi mapa de esquema a un java.util.Map. He leído en alguna parte que JAXB "no puede hacer interfaces". No estoy seguro de si eso se aplica en este caso, pero si fuera así estaría bien con la asignación a un HashMap. Además, no necesariamente tiene que ser el tipo de complejo que se asigna a un mapa, podría ser un elemento si eso es lo que se requiere.

Controlo mi generación JAXB usando un archivo .xjb, así que estoy buscando algunos <jaxb:bindings> para poner ahí. He intentado lo siguiente, pero no funciona:

<jaxb:bindings schemaLocation="myschema.xsd" node="/xs:schema"> <jaxb:globalBindings> <jaxb:serializable uid="1"/> </jaxb:globalBindings> <jaxb:schemaBindings> <jaxb:package name="com.myschema.client.types"/> </jaxb:schemaBindings> <jaxb:bindings node="//xs:complexType[@name=''MapType'']"> <jaxb:javaType name="java.util.HashMap" parseMethod="com.myschema.common.MapConverter.parseObjectToMap" printMethod="com.myschema.common.MapConverter.printMapToObject" /> </jaxb:bindings> </jaxb:bindings>

Edición: he añadido más detalles sobre el enlace anterior que ya he intentado. Genera el siguiente error durante la compilación del esquema:

[jaxb] [ERROR] compiler was unable to honor this javaType customization. It is attached to a wrong place, or its inconsistent with other bindings.

<jaxb:javaType> no funcionará porque solo se puede usar para mapear entre primitivas de esquema XML y tipos de Java . Ya que quiero mapear entre un tipo complejo y un tipo de Java, no puedo usar esto.



Su archivo XJC está utilizando la directiva "estándar" de tipo javaType , que creo que se limita a convertir valores de cadena desde y hacia un tipo Java representativo. Como tal, solo es adecuado para convertir elementos simples y contenido de atributos.

La herramienta XJC proporciona una versión mejorada de javaType , que en teoría debería ser capaz de manejar estructuras más complejas. Desafortunadamente, esto aún no se ha implementado:

https://java.net/jira/browse/JAXB-209 (sin resolver)

Por ejemplo, ser capaz de asignar un tipo de esquema a un HashMap podría ser un requisito probable para aquellos que usan un diseño / implementación guiado por un modelo. AFAICS, esto no es posible hoy. Por lo tanto, uno debe editar manualmente el código generado.

Parece que estás fuera de suerte.