Convertir en objet Java pour XML string
Oui, oui, je sais que beaucoup de questions ont été posées sur ce sujet. Mais je ne trouve toujours pas la solution à mon problème. J'ai une propriété annoté objet Java. Par exemple à la Clientèle, comme dans cet exemple. Et je veux une représentation de Chaîne d'elle. Google reccomends à l'aide de JAXB pour de telles fins. Mais dans tous les exemples créé fichier XML est imprimé sur une console ou un fichier, comme ceci:
File file = new File("C:\\file.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
//output pretty printed
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
jaxbMarshaller.marshal(customer, file);
jaxbMarshaller.marshal(customer, System.out);
Mais je dois utiliser cet objet et l'envoyer sur le réseau au format XML. Je tiens donc à obtenir une Chaîne de caractères qui représente XML.
String xmlString = ...
sendOverNetwork(xmlString);
Comment puis-je faire cela?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le Marshaleur méthode de regroupement qui prend un Auteur comme paramètre:
et une mise en Œuvre qui peut construire un objet de type String
Appeler sa toString méthode pour obtenir de la Chaîne de valeur.
Faisant:
StringWriter
est très ancienne. Sous les couvertures, il utiliseStringBuffer
où un beaucoup plus rapide aurait été d'utiliserStringBuilder
mais qui n'existait pas lors de StringWriter a d'abord été faite. De ce fait chaque appel àsw.toString()
implique la synchronisation. Pis si vous êtes à la recherche de la performance.Comme A4L de mentionner, vous pouvez utiliser StringWriter. Fournir ici un exemple de code:
Une bonne option est d'utiliser javax.xml.bind.JAXB:
Le processus inverse (unmarshal) serait:
Pas besoin de traiter avec les exceptions à cette approche.
Vous pouvez maréchal à un
StringWriter
et de saisir sa chaîne. detoString()
.StringWriter
. Le lien est juste de la documentation.StringWriter
, le passer àmarshal()
, appeltoString()
.Marshaller
a plusieurs maréchal des méthodes surchargées, il suffit de prendre un coup d'oeil à leurs paramètres et de ce qu'ils sont et vous allez trouver la réponse.Pour convertir un Objet XML en Java
Customer.java
ConvertObjToXML.java
Essayez avec cette exemple..
De tests Et de travail code Java pour convertir en objet java XML:
Customer.java
createXML.java
À L'Aide De ByteArrayOutputStream
Certains Génériques de code pour créer XML Stirng
objet --> est la classe Java pour le convertir en XML
nom --> est juste le nom de l'espace comme chose - pour se différencier
J'ai pris la JAXB.le maréchal de la mise en œuvre et a ajouté jaxb.fragment=true pour supprimer le prologue XML. Cette méthode permet de manipuler des objets, même sans le XmlRootElement annotation. Cela jette aussi de la décoché DataBindingException.
Si l'avertissement du compilateur vous dérange, voici le baser sur un modèle, deux paramètre de version.
Utiliser cette fonction convertit l'Objet en chaîne de caractères xml
(doit être appelé comme convertToXml(objetsource (sourceobject), Object.class); )-->
Utiliser cette fonction pour convertir la chaîne de caractères xml de l'Objet -->
(doit être appelé comme
createObjectFromXmlString(xmlString, Object.class)
)