¿Es posible convertir un javax.xml.bind.annotation.XmlType en la representación de cadena del XML?¿Cómo obtener la representación de Cadena de XmlType?
Ejemplo:
El siguiente Req clase es de una biblioteca de terceros por lo que no puede anular el método toString().
@javax.xml.bind.annotation.XmlAccessorType(javax.xml.bind.annotation.XmlAccessType.FIELD)
@javax.xml.bind.annotation.XmlType(name = "req", propOrder = {"myDetails", "customerDetails"})
public class Req {
...
}
En mi solicitud Quiero simplemente obtener una representación de cadena del XML para que pueda conectarse a un archivo:
<Req>
<MyDetails>
...
</MyDetails>
<CustomerDetails>
...
</CustomerDetails>
</Req>
Cuando intento utilizar JAXB y Marshall para convertir a XML cuerda:
JAXBContext context = JAXBContext.newInstance(Req.class);
Marshaller marshaller = context.createMarshaller();
StringWriter sw = new StringWriter();
marshaller.marshal(instanceOfReq, sw);
String xmlString = sw.toString();
consigo la siguiente excepción:
javax.xml.bind.MarshalException
- with linked exception:
[com.sun.istack.SAXException2: unable to marshal type "mypackage.Req" as an element because it is missing an @XmlRootElement annotation]
He echado un vistazo a las otras clases dentro de la biblioteca de terceros y ninguna de ellas usa la anotación @XmlRootElement. De cualquier forma alrededor de esto?
Una palabra de advertencia para el OP: 'JAXBContext's es costoso (lento) para crear. Crea y reutiliza una sola instancia. –
Intenté usar JAXB y Marshall pero obtengo la MarshalException descrita en la publicación anterior. – ryan
y no puede cambiar la clase Req para agregar la anotación XmlRoot? –