Me gustaría modificar la secuencia de salida para una operación de clasificación JAXB para incluir algún XML arbitrario. Aquí hay un ejemplo para aclarar la situación.¿Cómo puedo modificar la secuencia de salida de clasificación JAXB para incluir arbitrariamente XML en línea?
que tienen un objeto arbitrario Product
dominio con anotaciones JAXB que en la actualidad se parece a esto:
@XmlRootElement(name="Product")
public class Product {
@XmlElement(name="CommonProperty")
private String commonProperty="Something";
@XmlElement(name="ExtraXml")
private String extraXml="Something extra";
}
que normalmente sería reunir en esto:
<Product>
<CommonProperty>Something</CommonProperty>
<ExtraXml>Something else</ExtraXml>
</Product>
Ahora, lo que si el campo extraXml
contenía algunos XML adicional (de complejidad arbitraria) que debía incluirse en línea con el resultado final ordenado?
Say, extraXml
contenía "<abc><def>Something extra</def></abc>
", realmente me gustaría una solución que me permitió reunir Product
como esto (el formato opcional):
<Product>
<CommonProperty>Something</CommonProperty>
<abc>
<def>Something extra</def>
</abc>
</Product>
He mirado en this related question pero no lo hizo bastante arrojo el resultado que estoy buscando, ya que parece estar más orientado hacia un cambio de formato general en lugar de la inserción DOM.
La propiedad extraXml
está simplemente ahí para la ilustración, podría marcarse como @XmlTransient
o en una sola clase especializada. El único criterio es que de alguna manera puede obtener un String
que contenga contenido XML completamente arbitrario para anexar a la salida almacenada individual Product
.
También debo mencionar que los consumidores de la salida de esto son capaces de analizar el contenido arbitrario de la manera que les convenga. El propósito aquí es simplificar el procesamiento en el lado del servidor.
Gracias de antemano por cualquier ayuda que pueda ofrecer.
Suena prometedor: ¿podría explicar un poco? –
@Gary, he actualizado mi respuesta para explicar cómo se puede hacer esto utilizando @XmlAnyElement. –
+1 para su actualización principal: es una gran ayuda (y felicidades por haber roto 3K hoy). Hay una última parte si no te importa. Al comienzo de la clasificación, solo tengo 'extraXml' como cadena y una instancia de' Product' creada por 'new Product()'. ¿Hay alguna manera de especificar el Nodo de una manera que JAXB esté feliz de organizar? –