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
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser JAXB et marshall à la chaîne xml
Addding à ce que Bala R indiqué, vous pouvez le faire si votre JAXB élément n'avez pas le
@xmlrootelement
Cela a été dit également ici.