2010-11-18 9 views
5

Hay un conjunto de archivos XSD, con los siguientes tipos descritos en ellos:¿Qué framework Java xml puede manejar generación de código con restricciones/extensiones en esquemas?

A es un tipo complejo con varios elementos. B restringe A, conservando solo algunos de sus elementos C extiende B, agregando algunos elementos.

Por lo tanto, esto significa que una clase Java generada por una herramienta de uso de tipo C del esquema XML, se espera que incluya únicamente los miembros de A que se mantienen por B, y los nuevos agregados por C

Para hacer que las cosas sean aún más difíciles, B realmente cambia el atributo minOccurs de algunos de los elementos.

¿Hay marcos que puedan manejar esto? He intentado EMF y las restricciones ni siquiera se reflejan en el código.

Respuesta

2

Al usar XSDs complejos obtuve los mejores resultados con XMLBeans.

  • Tiene soporte completo de esquema XML.
  • Era el único marco que podía generar el código correcto para los intrincados esquemas xml que tenía que usar.

Otra característica muy útil es:

Cuando unmarshalling una instancia XML del conjunto de información XML completo se mantiene y está disponible para los desarrolladores. Esto es crítico porque debido al subconjunto de XML que no se representa fácilmente en Java. Por ejemplo, el orden de los elementos o comentarios puede ser necesario en una aplicación particular.

+0

Gracias Martin, de hecho, parece ser compatible con el esquema completo. – mahonya

2

Aquí está antoher alternativa (para que usted puede elegir uno): El Axis2 DataBinding Framework (BAD) soporta jerarquía de tipos y las restricciones de encargo.

Pros: Genera la estructura de esquema completa e implementa getters y setters de cada elemento. En los instaladores de cada tipo, y comprueba las restricciones definidas por el esquema, y ​​cuando el valor para establecer no coincide con la restricción arroja una excepción (en el propio método de configuración), y es compatible con StAX para la serialización/deserialización.

Contras: el código generado puede resultar un poco demasiado prolijo, las excepciones de validación son muy pocos explicativo, que está destinado a ser "simple" (así con extensiones de tipo complejo o restricciones que podría encontrar algunas dificultades), y incluye algunas dependencias con la biblioteca ADB (es decir, los beans generados implementan la interfaz org.apache.axis2.databinding.ADBBean).

+0

página BAD contiene lo siguiente en la parte inferior: "Limitaciones conocidas ADB está destinado a ser un marco de enlace de datos 'Simple' y no estaba destinado a recopilar todo tipo de esquemas Las siguientes limitaciones son los que se destacan 1.. Extensiones y extensiones de tipo complejo " – mahonya

+0

Sí, lo mencioné como una estafa.Pero lo he usado para serializar algunos datos heracárquicos (una clase padre y un conjunto de clases extendidas, algunas relaciones de composición/agregación) y con las restricciones usuales soportadas por XSD (como la capacidad de anulación, el número de apariciones, la correspondencia con expresiones regulares, etc.), y funcionó bien. El punto aquí es que las excepciones de validación se generaron con un mensaje vacío, que puede ser un problema. –

Cuestiones relacionadas