2011-11-05 37 views
6

para establecer el nombre de un elemento XML que utilizo anotaciones como esto:JAXB: ¿Cambiar el nombre del elemento XML del código de Java?

@XmlElement(name = "customer_id") 
public String getId(){} 

tengo que comunicar con dos servicios web diferentes. Uno expande un elemento id llamado customer_id pero el otro expande el elemento id que se llamará id. Resolví el problema creando una segunda clase Customer con los mismos atributos. La única diferencia es que utiliza la siguiente anotación

@XmlElement(name = "id") 
public String getId(){} 

y tiene un constructor de copia que copia todos los atributos de Customer1 a Customer2. Cuando me comunico con el primer servicio web, envío un objeto Customer1 y el otro servicio web obtiene un objeto Customer2.

¿Hay alguna posibilidad de usar solo un objeto Customer, pero cambiar el nombre del atributo id a lo que espera el servicio web?

Respuesta

5

Nota: Soy el líder EclipseLink JAXB (MOXy) y miembro del grupo de expertos JAXB 2 (JSR-222).

Puede usar la extensión del documento de mapeo externo en MOXy JAXB para aplicar una segunda asignación a su modelo de objetos. Este documento de mapeo se puede usar para modificar los metadatos proporcionados a través de anotaciones o reemplazarlo por completo.

Para una detallada Ejemplo

En el ejemplo siguiente un solo modelo de objetos se correlaciona con los resultados de las API de tiempo de Google y Yahoo:

Cuestiones relacionadas