Comment obtenir la représentation de chaîne de XmlType?

Est-il possible de convertir un javax.xml.bind.annotation.XmlType à la représentation de Chaîne de l'XML?

Exemple:

La classe suivante Req est d'un tiers de la bibliothèque donc je ne peux pas surcharger la méthode 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  {
...
}

Dans mon application je veux simplement obtenir une représentation de Chaîne de caractères XML de sorte que je puisse l'enregistrer dans un fichier:

<Req>
    <MyDetails>
    ...
    </MyDetails>
    <CustomerDetails>
    ...
    </CustomerDetails>
</Req>

Lorsque j'essaie d'utiliser JAXB et Marshall à se convertir à la Chaîne XML:

JAXBContext context = JAXBContext.newInstance(Req.class);
Marshaller marshaller = context.createMarshaller();
StringWriter sw = new StringWriter();
marshaller.marshal(instanceOfReq, sw);
String xmlString = sw.toString();

- Je obtenir de l'exception suivante:

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]

J'ai eu un coup d'oeil aux autres classes au sein de la troisième partie de la bibliothèque et aucun d'entre eux utilisent l' @XmlRootElement annotation. Moyen de contourner ce problème?

source d'informationauteur ryan | 2011-05-17